观察者模式

来源:互联网 发布:sql count1什么意思 编辑:程序博客网 时间:2024/06/03 20:22

一、什么是观察者模式

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


二、观察者模式的本质

观察者模式的本质是触发联动。


三、观察者模式的两种实现

1.推模型

目标对象主动像观察者推送目标的详细信息,推送的信息通常是目标对象的全部或部分数据,相当于广播通信。

2.拉模型

目标对象在通知观察者的时候,值传递少量的信息。如果观察者需要更具体的信息,由观察者主动到目标对象中获取,相当于是观察者从目标对象中拉数据。一般这种模型的实现中,会把目标对象自身通过update方法传递给观察者。



四、推模型和拉模型的比较

我们先对推模型和拉模型做个比较,推模型是目标对象知道观察者需要什么数据,而拉模型是目标对象不知道观察者具体需要什么数据,因此把滋生传给观察者,有观察者来取值。

所以,推模型会使观察者对象难以复用,而拉模型扩展性更好,因为拉模型下的update方法的参数是对象本身,基本哈桑可以适应各种情况的需要。


五、观察者模式的使用场景

1、当一个抽象模型有两个方面,其中一个方面的操作依赖于另一个方面的状态变化

2、如果在更改一个对象的时候,需要去同时连带改变其他的对象,而且不知道究竟有多少对象需要被连带改变

3、当一个对象必须通知其他的对象,但是你又希望这个对象和其他被他通知的对象是松散耦合的


0 0