研磨设计模式之观察者模式 学习笔记
来源:互联网 发布:淘宝佣金多少 编辑:程序博客网 时间:2024/05/17 00:56
观察者模式
按照模式的定义,目标和观察者之间是典型的一对多的关系。也可以是一对一的关系,只有一个观察者。在观察者模式中,观察者和目标是单向依赖的,只有观察者依赖于目标,而目标是不会依赖于观察者的。
它们之间联系的主动权掌握在目标手中,只有目标知道什么时候需要通知观察者,在整个过程中,观察者始终是被动的,被动的等待目标的通知,等待目标传值给它。
对目标而言,所有的观察者都是一样的,目标会一视同仁的对待。当然也可以通过在目标里面进行控制,实现有区别对待观察者,比如某些状态变化,只需要通知部分观察者,但那是属于稍微变形的用法了,不属于标准的、原始的观察者模式了。
观察者模式的本质:触发联动。
当修改目标对象的状态的时候,就会触发相应的通知,然后会循环调用所有注册的观察者对象的相应方法,其实就相当于联动调用这些观察者的方法。
而且这个联动还是动态的,可以通过注册和取消注册来控制观察者,因而可以在程序运行期间,通过动态的控制观察者,来变相的实现添加和删除某些功能处理,这些功能就是观察者在update的时候执行的功能。
同时目标对象和观察者对象的解耦,又保证了无论观察者发生怎样的变化,目标对象总是能够正确地联动过来。
何时选用观察者模式
- 当一个抽象模型有两个方面,其中一个方面的操作依赖于另一个方面的状态变化,那么就可以选用观察者模式,将这两者封装成观察者和目标对象,当目标对象变化的时候,依赖于它的观察者对象也会发生相应的变化。这样就把抽象模型的这两个方面分离开了,使得它们可以独立的改变和复用。
- 如果在更改一个对象的时候,需要同时连带改变其它的对象,而且不知道究竟应该有多少对象需要被连带改变,这种情况可以选用观察者模式,被更改的那一个对象很明显就相当于是目标对象,而需要连带修改的多个其它对象,就作为多个观察者对象了。
- 当一个对象必须通知其它的对象,但是你又希望这个对象和其它被它通知的对象是松散耦合的,也就是说这个对象其实不想知道具体被通知的对象,这种情况可以选用观察者模式,这个对象就相当于是目标对象,而被它通知的对象就是观察者对象了。
- 研磨设计模式之观察者模式 学习笔记
- 研磨设计模式学习笔记之装饰器模式
- 研磨设计模式学习笔记之单例模式
- 学习笔记 ---- 设计模式之观察者模式
- 设计模式之观察者模式学习笔记
- 设计模式学习笔记之观察者模式
- 设计模式学习笔记之观察者模式
- 设计模式学习笔记之观察者模式
- 设计模式学习笔记之观察者模式
- 研磨设计模式笔记(一)之简单工厂模式
- 研磨设计模式之迭代器
- 设计模式学习笔记(二)之观察者模式(Observer)
- 大话设计模式之观察者模式--学习笔记
- 《Head First 设计模式》学习笔记之观察者模式
- 设计模式学习笔记之观察者模式(一)
- 设计模式 学习笔记 之 观察者模式 Observer (5)
- 观察者设计模式--学习笔记
- 设计模式笔记之观察者
- C#工程找不到Microsoft.Xna.Framework名字空间的问题
- ethernet
- 关于汉字的使用统计分析
- iOS XML解析器
- WinCE系统下基于DirectShow的摄像头应用编程
- 研磨设计模式之观察者模式 学习笔记
- java 命令行窗口输出希腊字母表
- 解决gentoo无法使用gitk命令
- 基于DirectShow的WinCE多媒体编程
- 根据数据字典表定义的表结构,生成创建表的SQL语句
- 条款19了解临时对象的来源 练习
- 求s=a+aa+aaa+aaaa+aa...a的值(技术支持课任务)
- poj 3083
- Java中使用InputStream读入Jar/zip内容