观察者模式--11种行为模式之一。
Posted 宁静淡泊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了观察者模式--11种行为模式之一。相关的知识,希望对你有一定的参考价值。
主要思想:
1个目标可以有多个观察者,
当目标更新后,目标主动通知观察者,
不同的观察者通过回调函数完成多态。
/* 观察者模式示例 */ # include <iostream> # include <list> using namespace std; //目标声明,观察者中用 class BaseSubject; //抽象的观察者 class AbsObserver { public: //更新目标,会传递目标指针,使观察者可以操作目标 virtual void update(BaseSubject *obj) = 0; }; //目标基类 class BaseSubject { public: //添加观察者 virtual void addObserver(AbsObserver *obs) { observers.push_back(obs); } //删除观察者 virtual void delObserver(AbsObserver *obs) { observers.remove(obs); } //通知观察者 virtual void notifyObserver() { for (list<AbsObserver *>::iterator ite = observers.begin(); ite != observers.end(); ++ite) { (*ite)->update(this); } } private: list<AbsObserver *> observers; }; //具体的观察者1 class Observer1 : public AbsObserver { public: virtual void update(BaseSubject *obj) { cout << "观察者1收到通知并进行操作" << endl; } }; //具体的观察者2 class Observer2 : public AbsObserver { public: virtual void update(BaseSubject *obj) { cout << "观察者2收到通知并进行操作" << endl; } }; //目标派生类 class DeriveSubject : public BaseSubject { public: DeriveSubject() { cout << "构造目标" << endl; } }; int main() { Observer1 obs1; //构造观察者1 Observer2 obs2; //构造观察者2 DeriveSubject a; //构造目标 a.addObserver(&obs1); //添加观察者1 a.addObserver(&obs2); //添加观察者2 a.notifyObserver(); //通知观察者 }
以上是关于观察者模式--11种行为模式之一。的主要内容,如果未能解决你的问题,请参考以下文章