观察者模式(Observer) 属于对象的
行为模式。
1. 定义
定义对象间的一种一对多的关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知,并被自动更新。
2. 使用的原因
在应用程序开发过程中,往往都要求用户界面和业务逻辑分离,划定清晰的界限.因为应用程序要求能快速的更改用户界面并且不能对应用程序其他部分产生连带影响,而且业务逻辑也会发生变化并要求这一切变化与用户界面无关.观察者(observer)就是解决此问题最常用的设计模式,它非常有助于在系统中各个对象之间划分清晰的界限。
观察者模式在界面设计中应用广泛。
还有一种常见的情况,一个软件系统常常要求在某一个对象发生变化的时候,某些其它的对象做出相应的改变,而观察者模式是解决这个问题的一个低耦合度的设计方案,它能够减少对象之间的耦合以便更加利于系统的复用。
3. 适用的情况举例
eg1.
4. 类图结构及说明
1)示意性类图如下所示:
2)类说明
i)抽象主题Subject:用于将所有的对象引用保存在一个聚集中(比如Vector对象)里,每个Subject可以有任何数量的观察者。它又被叫做抽象观察者(Observable)角色,一般使用抽象类或接口实现。
ii)抽象观察者Observer:为所有的具体观察者定义一个接口,在得到Subject的通知时更新自己。
iii)具体主题ConcreteSubject:将有关状态存入具体观察者对象。在具体主题的内部状态改变时,给所有登记过的观察者发出通知。又被称为具体被观察者角色。
iv)具体观察者ConcreteObserver:实现了抽象观察者Observer,在被观察者发出通知时,将自行执行update方法更新。
5. 使用举例
待续。
6. 参考文章
1)《Pattens In Java》
2)《Java与模式》
3)http://i.cn.yahoo.com/whj1234586/blog/p_34/
4)http://www.999qc.cn/Article/NET/15500/
posted on 2008-05-14 07:56
阿蜜果 阅读(4808)
评论(4) 编辑 收藏 所属分类:
Design Pattern