码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-11-10 12:06:26      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:master   begin   cout   etl   erp   r++   lis   设计   onchange   

观察者模式代码例子

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

 

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

标签:master   begin   cout   etl   erp   r++   lis   设计   onchange   

原文地址:https://www.cnblogs.com/wuhongjian/p/11829187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!