初心者モードオブザーバデザインパターン

オブザーバーパターンコードの例

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 }。

 

おすすめ

転載: www.cnblogs.com/wuhongjian/p/11829187.html
おすすめ