初学设计模式之观察者模式

断了今生、忘了曾经 提交于 2019-12-04 03:42:25

观察者模式代码例子

 1 //观察者模式
 2 #include<iostream>
 3 #include<list>
 4 using namespace std;
 5 
 6 class MasterListener
 7 {
 8 public:
 9     virtual void OnChange()
10     {
11     };
12 
13 };
14 
15 class Student1:MasterListener
16 {
17 public:
18      void OnChange()
19     {
20         cout<<"同学A不看小说了"<<endl;
21     };
22 };
23 
24 
25 class Student2:MasterListener
26 {
27 public:
28      void OnChange()
29     {
30         cout<<"同学B不玩手机了"<<endl;
31     };
32 };
33 
34 
35 class Master
36 {
37 protected:
38     list<MasterListener*>m_list;
39     //MasterListener* m_MasterListenerPtr;
40 public:
41     void setListener(MasterListener* m_MasterListenerPtr)
42     {
43         m_list.push_back(m_MasterListenerPtr);
44         //m_MasterListenerPtr=m_MasterListener;
45     };
46     void Notify()
47     {
48         for(list<MasterListener*>::iterator 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=new Student1;
58     Student2 *m_student2=new Student2;
59     Master 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     return 0;
68 };

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!