观察者模式(Observer)
1.定义
定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
2.结构说明
Subject:目标对象,通常具有如下功能。
一个目标可以被多个观察者观察
目标提供对观察者注册和退订的维护
当目标的状态发生变化时,目标负责通知所有注册的、有效的观察者
Observer:定义观察者的接口,提供目标通知时对应的更新方法,这个更新方法进行相应的业务处理,可以再这个方法里面回到目标对象,以获取目标对象的数据
ConcreteSubject: 具体的目标实现对象,用来维护目标状态,当目标对象的状态发生改变时,通知所有注册的,有效的观察者,让观察者执行相应的处理。
ConcreteObserver:观察者的具体实现对象,用来接收目标的通知,并进行相应的后续处理。
3.单向依赖
观察者依赖于目标,但是目标不依赖于观察者
4.触发通知的时机
早实现观察者模式的时候,一定要注意触发通知的时机。一般情况下,是在完成了状态维护后触发,因为通知会传递数据,不能够先通知后该数据,这很容易出问题,会导致观察者和目标对象的状态不一致。
5.相互观察
如果出现相互观察,避免出现死循环
6.观察者模式的推拉模型
推模型:目标对象主动向观察者推动目标的详细信息
拉模型:目标动向在通知观察者的时候,只传递少量信息,如果观察者需要更具体的信息可以通过读取目标对象中获取。
7.java中实现观察者
Observable接口,实现Subject的功能
Observer接口,实现Water的功能
8.本质
触发联动
9.相关模式
状态模式
中介者模式
posted on 2016-08-09 22:42 zhaojunyang 阅读(385) 评论(0) 收藏 举报
浙公网安备 33010602011771号