观察者模式
2015-10-13 00:42
162 查看
定义
观察者模式,顾名思义就是观察者对某事物进行观察,当事物状态改变(符合条件)时,通知所有的订阅者,使他们做出对应的反应。一般可以通过类之间的引用调用来实现、也可以通过事件订阅的方式实现。
类实现方式的类图
public delegate void NotifyHandler(); public class Subject { public string State { get; set; } } public class Notifier { public event NotifyHandler Nofify; private Subject subject = null; public Notifier(Subject subject ) { this.subject=subject; } public void OnChangeState(string state) { subject.State = state; if (Nofify != null) { Nofify(); } } } public class Observer { public Observer(Notifier notifier) { notifier.Nofify += notifier_Nofify; } void notifier_Nofify() { //TODO...reflect }
View Code
总结
观察者模式,着重于条件触发点到达时对一类对象进行通知,已达到广播通知的效果。关于类实现、还是事件订阅方式的实现,主要看功能业务,事件订阅方式简化了代码,同时也比较明了。而类实现则增加了耦合,并且要求订阅者有统一基类或者接口,但定义类的功能有时可以照顾到其他的业务实现。
相关文章推荐
- Objective-C编程语言概叙
- Oracle视图、序列、索引、约束
- OpenGL用着色器画绿色三角形
- Java字节码指令列表
- CF div2 325 C
- 冒泡排序算法小试[笑哭]
- poj3342 Party at Hali-Bula
- CF div2 325 B
- CF div2 325 A
- Linux使用错误小结(CentOS)- vim安装问题: Error: Nothing to do
- iOS 开发的9个超有用小技巧
- Android定制ListView的界面(使用继承自ArrayAdapter的自定义适配器)--《第一行代码Android》学习笔记
- Spring MVC4.2.1 xml配置
- 流媒体视频播放代码总结。
- VMware下扩展Ubuntu根分区大小的方法
- 工作-时间管理法
- Unity3D之FPS计算
- UIButton 按钮控件-IOS开发
- Appium环境配置
- C++基础---typedef struct与struct的区别