设计模式
来源:互联网 发布:日本电脑软件 编辑:程序博客网 时间:2024/06/03 21:30
(1)定义
建立对象间的一种一对多依赖关系,当一个对象状态发生改变时,其相关对象皆得到通知并被自动更新。
(2)应用场景
•群发信息•消息提示
(3)实现
class Subject{public:Subject();virtual ~Subject();Obeserver *m_Obeserver;void attach(Obeserver * pObeserver);void detach(Obeserver * pObeserver);void notify();virtual int getState() = 0;virtual void setState(int i)= 0;private:vector<Obeserver*> m_vtObj;};
class Observer{public:Observer();virtual ~Observer();virtual void update(Subject * sub) = 0;};
int main(int argc, char *argv[]){Subject * subject = new ConcreteSubject();Observer * objA = new ConcreteObserver("A");Observer * objB = new ConcreteObserver("B");subject->attach(objA);subject->attach(objB);subject->setState(1);subject->notify();delete subject;delete objA;delete objB;return 0;}
(4)优点
•稳定的消息更新传递机制•支持广播通信
(5)缺点
•观察者很多的时候,通知所有的观察者到会花费很多时间。•存在循环依赖时,会导致系统崩溃。
•观察者仅知道目标变化,但不知道如何变化。
阅读全文
0 0
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式~~~~~~~~~~
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- POJ 1237 Drainage Ditches
- 7、Spring Session-Spring Security集成
- 用Java输出菱形,用函数调用方法
- 【Thymeleaf】新一代Java模板引擎Thymeleaf
- Anti-disassembly on ARM (IDA, specifically)
- 设计模式
- pgsql 物理备份
- 技术文章 | CVE-2017-12615/CVE-2017-12616:Tomcat信息泄漏和远程代码执行漏洞分析报告
- Android Butterknife 8.4.0 使用方法总结
- 让IT更精简,让项目更敏捷-如何成功运用敏捷方法进行项目管理与实施
- leetcode.array--11. Container With Most Water
- java集合详解
- 大数据时代下的隐私保护
- 交换两个变量的值