设计模式(C++实现)之Observer
来源:互联网 发布:淘宝违规产品怎么上架 编辑:程序博客网 时间:2024/06/16 04:33
观察者模式(Observer Pattern)也叫做发布-订阅模式(Publish/Subscribe).
下面跟随一个关于军官指挥士兵打仗的例子来学习此模式吧。
营长一声怒吼“开火”,各士兵奋勇杀敌,司令收到已开始进攻通知。
这里面有三个角色,营长,士兵,司令。当营长下令开火时,士兵和司令都得到了通知。
也就是说,营长是发布者,士兵和司令都在营长这里”订阅“了消息。营长是被观察者(Subject),士兵和司令都是观察者(Observer)
代码1:营长
营长也就是这个模式中的Subject,继承ISubject接口
代码2:士兵和司令
士兵和司令是这个模式中的Observer,继承IObserver接口
代码3:IObserver接口
在ISubject中调用Update函数,完成各个Observer对消息的反馈
代码4:ISubject接口
这个接口负责添加和删除Observer,并且完成各个Observer通知的任务
好了,各个主角悉数登场,看看他们是怎么一起工作的吧
代码5:Client
看到这里,大致应该能够知道Subject和Observer是如何一起工作了吧,接下来我们来看看类关系图吧
图1:GOF中关于Observer的类图
图2:例子的类图
讲代码和图1,图2比照这看看吧,营长是ISubject的具体类,士兵和司令是IObserver的具体类。
是不是很简单?这个观者者的Update没有带参数,可以带哦~
有兴趣看看此模式另一个实例的请到我的博客中查看“事件和委托的C++实现”http://blog.csdn.net/whsmile555/archive/2010/08/31/5853312.aspx
- 设计模式(C++实现)之Observer
- 设计模式解析和实现(C++)之十五-Observer模式
- 设计模式解析和实现(C++)之十五-Observer模式
- Observer设计模式(C++)
- 设计模式(c++)笔记之十六(Observer模式)
- 设计模式(c++)笔记之十六(Observer模式)
- 设计模式之Observer模式(C++实现)
- 设计模式PHP5实现之----观察者(Observer)
- 设计模式----观察者模式Observer(C++)
- 设计模式之Observer(观察者模式)
- 设计模式之Observer(观察者模式)
- 【设计模式】之观察者模式(Observer)
- 设计模式之--观察者模式(Observer)
- 设计模式之观察者(Observer)模式
- 设计模式之观察者(observer)模式
- 设计模式之观察者模式(Observer)
- 设计模式之-观察者模式(Observer)
- 设计模式之观察者模式(Observer)
- 2010/08/30(get process memory info)
- oracle树结构查询----connect by语法详解 (转)
- MIDP高低级界面开发
- java路径问题
- 中断
- 设计模式(C++实现)之Observer
- 如何在windows XP下安装基于apache或者IIS的bugzilla
- 资源消耗很小的内存池代码
- VC++孙鑫视频笔记(十二)
- 9月预备读的书
- vim与X程序共享剪贴板
- 创建与删除无法删除的文件夹
- 浅谈产品感的培养
- MFC PreTranslateMessage