设计模式之观察者模式
2015-12-20 15:38
204 查看
定义:
观察者模式又称为发布-订阅模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
角色:
抽象通知者(Subject):把所有对观察者的引用保存在一个聚集里,每个通知者都可以有任意数量的观察者。抽象观察者一般用一个抽象类或接口实现,同时有增加和删除观察者对象的方法。
具体通知者:将有关状态存入具体观察者对象,在具体通知者的内部状态改变时,通知所有保存引用的观察者。
抽象观察者(Observer):为所有的具体观察者定义一个接口,在得到通知者的通知时,更新自己。抽象观察者一般用一个抽象类或接口实现,包含一个更新方法Update()。
具体观察者:实现抽象观察者所要求的接口,以便使本身的状态与通知者的状态相协调。
UML图:
总结:
当一个对象的改变需要同时改变其他很多对象(对象数量不定)时,应该考虑使用观察者模式。观察者模式所做的工作是在解除耦合。让耦合的双方都依赖于抽象,而不是依赖于具体,从而是的各自的变化都不会影响另一边的变化。
观察者模式又称为发布-订阅模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
角色:
抽象通知者(Subject):把所有对观察者的引用保存在一个聚集里,每个通知者都可以有任意数量的观察者。抽象观察者一般用一个抽象类或接口实现,同时有增加和删除观察者对象的方法。
具体通知者:将有关状态存入具体观察者对象,在具体通知者的内部状态改变时,通知所有保存引用的观察者。
抽象观察者(Observer):为所有的具体观察者定义一个接口,在得到通知者的通知时,更新自己。抽象观察者一般用一个抽象类或接口实现,包含一个更新方法Update()。
具体观察者:实现抽象观察者所要求的接口,以便使本身的状态与通知者的状态相协调。
UML图:
总结:
当一个对象的改变需要同时改变其他很多对象(对象数量不定)时,应该考虑使用观察者模式。观察者模式所做的工作是在解除耦合。让耦合的双方都依赖于抽象,而不是依赖于具体,从而是的各自的变化都不会影响另一边的变化。
相关文章推荐
- Resource Governor 控制 Memory 和 CPU 的使用
- HTML5新标签作用与使用?
- 二叉树的建立与遍历(山东理工OJ)
- Windows下使用命令行设置ip地址的DNS服务器
- 多线程处理
- poj 3280 Cheapest Palindrome 【区间dp】
- vim 常用设置
- scala-34:对List进行高效的排序和倒排序代码实战
- 内存管理
- html5 一共多少标签:
- Daily Scrum 12.20
- CocoaPods pod install/pod update更新慢的问题
- PHP XML的处理
- linux下获取域名的IP地址
- HTML5Audio/Video全解(标签解读)
- 面向对象与UML建模
- IOC实现完全接口编程
- MyLinearLayout1.1.0 一套功能强大的iOS布局库
- 【android】获取屏幕宽和高
- android-NFC Basics