java设计模式之观察者模式Observer

定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。


优点:当两个对象之间松耦合,他们依然可以交互,但是不太清楚彼此的细节。观察者模式提供了一种对象设计,让主题和观察者之间松耦合。

支持广播通信,被观察者会向所有的登记过的观察者发出通知。

缺点:如果一个被观察者对象有很多直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间


结构:


目标(Subject): 目标知道它的观察者。可以有任意多个观察者观察同一个目标。 提供注册和删除观察者对象的接口。
具体目标(ConcreteSubject):  将有关状态存入各ConcreteObserver对象。
观察者(Observer):  为那些在目标发生改变时需获得通知的对象定义一个更新接口。当它的状态发生改变时, 向它的各个观察者发出通知。
具体观察者(ConcreteObserver):   维护一个指向ConcreteSubject对象的引用。存储有关状态,这些状态应与目标的状态保持一致。实现O b s e r v e r的更新接口以使自身状态与目标的状态保持一致。


Observer模式的Java实现
                Java的API中已经为我们提供了Observer模式的实现。具体由java.util.Observable类(主题)和java.util.Observer接口(观察者)完成。
                前者有两个重要的方法:
                       ·setChanged:设置内部状态为已改变
                       ·notifyObservers(Object obj):通知观察者所发生的改变,参数obj是一些改变的信息
                后者有一个核心方法:
                       ·update(Object obj):相应被观察者的改变,其中obj就是被观察者传递过来的信息,该方法会在notifyObservers被调用时自动调用。



设计模式 ( 十六 ) 观察者模式Observer(对象行为型)

http://blog.csdn.net/hguisu/article/details/7556625

观察者模式(二)--《Head First DesignPattern》

http://www.cnblogs.com/longshaohang/p/3355894.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值