C++设计模式之观察者模式

来源:互联网 发布:一元秒杀包邮 淘宝 编辑:程序博客网 时间:2024/06/05 15:37
#include <iostream>#include <stdlib.h>#include <vector>#include <string>using namespace std;class Secretary;class StockObserver{public:StockObserver(string name, Secretary* sub){this->name = name;this->sub = sub;}void Update();private:string name;Secretary* sub;};class Secretary{public:string action;void Add(StockObserver *ob){observers.push_back(*ob);}void Remove(int addIndex){if (addIndex >= 0 && addIndex < observers.size()){observers.erase(observers.begin() + addIndex);}}void Notify(){for (vector<StockObserver>::iterator it = observers.begin(); it != observers.end(); ++it){(*it).Update();}}private:vector<StockObserver> observers;};void StockObserver::Update(){cout << name << ":" << sub->action << " begin to work " << endl;}int main(){Secretary* p = new Secretary();StockObserver* s1 = new StockObserver("Lazy", p);StockObserver *s2 = new StockObserver("SnowFire", p);p->Add(s1);p->Add(s2);p->action = "The boss is coming";p->Notify();p->Remove(0);p->Notify();cin.get();}