设计模式之——观察者模式(Observer)
来源:互联网 发布:淘宝网开店要求 编辑:程序博客网 时间:2024/05/23 02:04
观察者:在对象之间定义一对多的依赖,这样当一个对象的状态改变时,其它所有依赖它的对象都能收到通知,并自动更新
观察者模式是用得非常多的一种设计模式,看看Windows里面的消息机制,回调函数就知道了。用一句话概括就是你不用来找我,我会找你。一个主题可以有很多观察者,只要让主题知道就行了,然后当主题有变化的时候,他就会通知所有的观察者,并把数据发送给他们,那样不同的观察者就可以对同一份数据进行处理,但得到不同的结果。这样做的好处就是可以很灵活的扩展我们程序,如果我们需要增加一个不同的功能,只要增加一个观察者就可以了,不用对主题做任何修改,也不会影响其他已经存在的功能。当然也可以动态的删除观察者。其类图结构为
利用观察者模式,我们实现了针对接口编程,只要知道Observer的接口就行了,具体究竟是什么类型的观察者对主题来说是透明的。对于观察者模式来说,数据的传送有两种方式,就push 和 poll,前一种比较常见,即主题主动发送数据给观察者,这样可以不暴露任何数据接口;poll的方式是当主题数据变化时通知观察者,但不发送数据,而是提供接口由具体的观察者主动来取,这样的好处是每个观察者只要取自己需要的数据就可以了,同时也避免了所有数据封装的问题(因为随着主题数据的变化,肯能会得不到很好的封装)。
PS:这里有一个问题需要注意的是,Observer里面要保存一个Subject的指针,一般是在其构造函数里面传进去的,这样观察者就可以随时到主题注册,或从主题删除,而主题的代码不用作任何修改。
- 设计模式之 — Observer 观察者模式
- 设计模式—观察者模式(Observer)
- 设计模式之——观察者模式(Observer)
- 设计模式之Observer(观察者模式)
- 设计模式之Observer(观察者模式)
- 【设计模式】之观察者模式(Observer)
- 设计模式之--观察者模式(Observer)
- 设计模式之观察者(Observer)模式
- 设计模式之观察者(observer)模式
- 设计模式之观察者模式(Observer)
- 设计模式之-观察者模式(Observer)
- 设计模式之观察者模式(Observer)
- 设计模式之观察者模式(Observer)
- 设计模式之观察者模式(Observer)
- 设计模式之观察者(Observer)模式
- 设计模式之观察者模式(Observer)
- 设计模式之-观察者(Observer)模式
- 设计模式之Observer(观察者)模式
- Square新增顾客忠诚度培养和收费凭条打印功能
- 收缩数据库
- c# 将指定的信息导出到eXcel文件中,
- getElementById
- Boundary的妙用(以设置文字的宽度为例)
- 设计模式之——观察者模式(Observer)
- 单链表反转
- 走出用例图误区
- 求助:关于java虚拟机的安装
- 新游预告:Undead Arcade将于年底上市,采用虚幻引擎
- UDEV的移植
- redirect、redirect-action、chain三者的区别!
- Ubuntu,Mysql二进制安装流程以及常见错误
- 解决strongOD与olly advanced插件冲突问题