设计模式:observer模式
目标:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
例子:
class Observer //观察者 { public: virtual void upadte() = 0; //接受通知 }; class Manager // 管理者 { public: virtual void registerObserver(Observer* o) = 0; //注册观察者 virtual void notify() = 0; //通知所有的观察者 };
class ManagerImpl: public Manager { vector<Observer*> v; public: void registerObserver(Observer* o) { v.push_back(o); } void notify() { for(int i=0; i<v.size(); i++) { v[i]->upadte(); } } }; class FirstObserver: public Observer { public: void upadte() { cout << "FirstObserver::upadte()" << endl; } }; class SecondObserver: public Observer { public: void upadte() { cout << "SecondObserver::upadte()" << endl; } };
int main() { FirstObserver* f = new FirstObserver(); SecondObserver* s = new SecondObserver(); ManagerImpl* m = new ManagerImpl(); m->registerObserver(f); m->registerObserver(s); m->notify(); return 0; }