Henkk

导航

设计模式学习之----观察者模式

观察者模式

定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

大体实现:基类中维护观察者列表,声明接口及公共方法,观察者调用update刷新自己的状态。

 1 #include <iostream>
 2 #include <string>
 3 #include <list>
 4 
 5 using namespace std;
 6 //秘书通知的发出者 
 7 
 8 class Secretary;
 9 //观察者
10 class PlayerObserver
11 {
12 public:
13     PlayerObserver(Secretary *secretary)
14     {
15         m_secretary = secretary;
16     }
17     void update(string action)
18     {
19         cout << "action:" << action << endl;
20     }
21 
22 private:
23     Secretary * m_secretary; //个人感觉可有可无
24 };
25 
26 //主函数对这个类进行编程
27 class Secretary
28 {
29 public:
30     void Notify(string Info)
31     {
32         for (list <PlayerObserver*>::iterator it = m_list.begin(); it != m_list.end(); it++)
33         {
34             (*it)->update(Info);
35         }
36     }
37 
38     void setPlayerObserver(PlayerObserver *obj)
39     {
40         m_list.push_back(obj);
41     }
42 
43 private:
44     list <PlayerObserver*> m_list;
45 };
46 
47 
48 int main()
49 {
50     PlayerObserver    *po1 = nullptr;
51     PlayerObserver    *po2 = nullptr;
52     Secretary        *sec = nullptr;
53 
54     sec = new Secretary;
55     po1 = new PlayerObserver(sec);
56     po2 = new PlayerObserver(sec);
57 
58     sec->setPlayerObserver(po1);
59     sec->setPlayerObserver(po2);
60 
61     sec->Notify("boss is coming");
62     sec->Notify("boss is going out");
63 
64     delete sec;
65     delete po1;
66     delete po2;
67 
68     return system("pause");
69 }

 

posted on 2020-05-22 11:42  Henkk  阅读(132)  评论(0编辑  收藏  举报