设计模式学习之----观察者模式
观察者模式
定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
大体实现:基类中维护观察者列表,声明接口及公共方法,观察者调用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 }