オブザーバーパターンコードの例
1 // 观察者模式 2の#include <iostreamの> 3の#include <リスト> 4 使って 名前空間STDを、 5 6 クラスMasterListener 7 { 8 公共: 9 の仮想 ボイドのOnChange() 10 { 11 }。 12 13 }。 14の 15 クラスSTUDENT1:MasterListener 16 { 17 公共: 18 ボイドのOnChange() 19 { 20 << COUT " 生徒Aは、新規読み込まない" << ENDLを、 21である }; 22である }; 23である 24 25 クラスSTUDENT2:MasterListener 26は { 27 公共: 28 ボイドのOnChange() 29 { 30 COUT << 「学生が電話機Bを再生しません「 << ENDL; 31である }; 32 }; 33である 34は 35 クラスマスター 36 { 37 [ 保護: 38である リスト<MasterListener *>m_list; 39 // MasterListener * m_MasterListenerPtr。 40 公衆: 41 ボイド setListener(MasterListener * m_MasterListenerPtr) 42 { 43 m_list.push_back(m_MasterListenerPtr)。 44 // m_MasterListenerPtr = m_MasterListener。 45 }。 46 無効)(通知 47 { 48 のために(リスト<MasterListener *> ::イテレータITER = m_list.begin(); ITER = m_list.end(); ITER ++! ) 49 { 50 (* ITER) - > のOnChange(); 51 }。 52 }。 53 }。 54 55 のint main()の 56 { 57 STUDENT1 * m_student1 = 新しいSTUDENT1。 58 Student2 * m_student2 = 新しいStudent2。 59 マスターm_master。 60 m_master.setListener(m_student1)。 61 m_master.setListener(m_student2)。 62 63 coutの<< " 老师来了" << てendl; 64 m_master.Notify()。 65 66 GETCHAR()。 67 リターン 0 ; 68 }。