Observer模式
2016-04-26 15:06
197 查看
Observer模式应该可以说是应用最多、影响最广的模式之一,因为Observer的一个实例Model/View/Control(MVC)结构在系统开发架构设计中有着很重要的地位和意义,MVC实现了业务逻辑和表示层的解耦。
Observer模式要解决的问题为:建立一个“一”(Subject)对“多”(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的“多”也能够同步改变。最常见的一个例子就是:对同一组数据进行统计分析时候,我们希望能够提供多种形式的表示(例如以表格进行统计显示、柱状图统计显示、百分比统计显示等)。这些表示都依赖于同一组数据,我们当然需要当数据改变的时候,所有的统计的显示都能够同时改变。Observer模式就可以很好的解决这类问题。
在Observer模式的实现中,Subject通常都会维护一个数组作为存储其所有观察者的容器。每当Subject调用Notify操作时,就遍历这个数组中的Observer对象,Observer调用自己的Update操作以刷新显示。
Observer模式也称为发布—订阅(publish-subscribe),目标就是通知的发布者,观察者则是通知的订阅者(接受通知)。
Observer模式要解决的问题为:建立一个“一”(Subject)对“多”(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的“多”也能够同步改变。最常见的一个例子就是:对同一组数据进行统计分析时候,我们希望能够提供多种形式的表示(例如以表格进行统计显示、柱状图统计显示、百分比统计显示等)。这些表示都依赖于同一组数据,我们当然需要当数据改变的时候,所有的统计的显示都能够同时改变。Observer模式就可以很好的解决这类问题。
在Observer模式的实现中,Subject通常都会维护一个数组作为存储其所有观察者的容器。每当Subject调用Notify操作时,就遍历这个数组中的Observer对象,Observer调用自己的Update操作以刷新显示。
Observer模式也称为发布—订阅(publish-subscribe),目标就是通知的发布者,观察者则是通知的订阅者(接受通知)。
相关文章推荐
- PSBS主权评级风险资产质量差
- 简述基本TCP套接字编程(一)
- error C2088: '-' : illegal for union
- HDU 1664 放苹果
- GDB基本调试
- nginx 服务器重启命令,关闭
- 模式识别(Pattern Recognition)学习笔记(七)——线性分类器及线性判别函数
- char*,const char*和string的相互转换
- cocos2dx 在Android.mk加源所有.CCP文件
- ArrayList
- yum 下载 源码
- OSAtomic原子操作
- Rxjava
- 出现An internal error occurred during: “Building workspace”.的解决方法
- LeetCode 10.6 Restore IP Addresses
- Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForUmengDebug'. > com.androi
- CRichEditCtrl使用大全
- 使用PHP导入和导出CSV文件
- Linux 回收用户空间资源
- C/C++复习:分数减法(结构体)