读书人

举动模式之观察者模式(Observer Patte

发布时间: 2012-08-10 12:19:33 作者: rapoo

行为模式之观察者模式(Observer Pattern)(C++实现)重要**

观察者模式(Observer Pattern)行为模式.

它是应用最多,影响最广的模式之一,因为Observer的一个实例Model/View/Control(MVC)结构在系统开发构架中有着很重要的地位和意义,MVC实现了业务逻辑和表示层的解耦。Observer模式是软件开发过程中必须要掌握的和使用的模式之一。Observer模式要解决的问题为:建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变。最常见的一个例子就是:对同一组数据进行统计分析时候,我们希望能够提供多种形式的表示(例如以表格进行统计显示、柱状图统计显示、百分比统计显示等)。这些表示都依赖于同一组数据,我们当然需要当数据改变的时候,所有的统计的显示都能够同时改变。Observer模式就是解决了这一个问题。

设计原则:为了交互对象之间的松耦合设计而努力。

出版者+订阅者=观察者模式

定义:定义了对象之间的一对多的依赖,这样一来,当一个对象改变状态,它的所有依赖者都会收到通知并自动更新。

举动模式之观察者模式(Observer Pattern)(C++实现)重要*

主题对象(管理某些数据)------(一旦主题内的数据改变就会通知观察者)--------à观察者对象(狗对象,猫对象)

实现观察者模式的方法不止一种,但是以包含Subject和Observer接口的类设计的做法最常见。

气象站观察者模式类设计图:

举动模式之观察者模式(Observer Pattern)(C++实现)重要*


注意这里的Observer的Update操作并不在Observer改变了Subject目标状态的时候就对自己进行更新,这个更新操作要延迟到Subject对象发出Notify通知所有Observer进行修改(调用Update)。

C++实现:

Subject.h头文件