#ifndef __OBSERVER_MODEL__ #define __OBSERVER_MODEL__ #include <string> #include <iostream> #include <vector> using namespace std; /* GOOD:定义了一种一对多的关系,让多个观察对象(公司员工)同时监听一个主题对象(秘书), 主题对象状态发生变化时,会通知所有的观察者,使它们能够更新自己。 */ class Secretary; //看股票的同事类(观察对象,观察者) class StockObserver { private: string name; Secretary* sub; public: StockObserver(string strName, Secretary* strSub) { name = strName; sub = strSub; } void update(); }; //秘书类(主题对象,通知者) class Secretary { private: vector<StockObserver> observers; public: string action; void add(StockObserver ob){ observers.push_back(ob); } void notify() { vector<StockObserver>::iterator iter = observers.begin(); while( iter != observers.end() ) { (*iter).update(); ++iter; } } }; void StockObserver::update() { cout<<name<<":"<<sub->action<<",不要玩股票了,要开始工作了!"<<endl; } #endif //__OBSERVER_MODEL__ /* #include "ObserverModel.h" int _tmain(int argc, _TCHAR* argv[]) { //创建通知者 Secretary* p = new Secretary(); //观察者 StockObserver *s1= new StockObserver("小李",p); StockObserver *s2 = new StockObserver("小赵",p); //加入通知队列 p->add(*s1); p->add(*s2); //事件 p->action="老板来了"; //通知 p->notify(); return 0; } */