设计模式(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

原创粉丝点击