观察者模式
来源:互联网 发布:sql count1什么意思 编辑:程序博客网 时间:2024/06/03 20:22
一、什么是观察者模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
二、观察者模式的本质
观察者模式的本质是触发联动。
三、观察者模式的两种实现
1.推模型
目标对象主动像观察者推送目标的详细信息,推送的信息通常是目标对象的全部或部分数据,相当于广播通信。
2.拉模型
目标对象在通知观察者的时候,值传递少量的信息。如果观察者需要更具体的信息,由观察者主动到目标对象中获取,相当于是观察者从目标对象中拉数据。一般这种模型的实现中,会把目标对象自身通过update方法传递给观察者。
四、推模型和拉模型的比较
我们先对推模型和拉模型做个比较,推模型是目标对象知道观察者需要什么数据,而拉模型是目标对象不知道观察者具体需要什么数据,因此把滋生传给观察者,有观察者来取值。
所以,推模型会使观察者对象难以复用,而拉模型扩展性更好,因为拉模型下的update方法的参数是对象本身,基本哈桑可以适应各种情况的需要。
五、观察者模式的使用场景
1、当一个抽象模型有两个方面,其中一个方面的操作依赖于另一个方面的状态变化
2、如果在更改一个对象的时候,需要去同时连带改变其他的对象,而且不知道究竟有多少对象需要被连带改变
3、当一个对象必须通知其他的对象,但是你又希望这个对象和其他被他通知的对象是松散耦合的
0 0
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- Leetcode 326:Power of Three
- Xcode7 使用WebView loadRequest发送HTTP请求的问题
- zstu 2554 过河卒
- Hbase hirachical structure
- Linux socket 本地进程间通信
- 观察者模式
- mysql创建触发器错误提示:Can not update in stored function/trigger already used by statement invoked
- Java9积极解决Linux中的GTK GUI难题
- VS2012发布网站详细步骤,同样适合vs2013,亲身试过
- 强行删除mac中的文件
- x86 子函数调用过程分析
- [leetcode] 190. Reverse Bits 解题报告
- Android中BindService和StartService
- 【poj1838】Bananas——并查集