观察者模式

疑惑是来自于《HeadFirst设计模式》一书中的

观察者以及可观察对象

上定义:

观察者模式定义了对象之间的一对多依赖,这样依赖,当一个对象改变状态时,它的所有的依赖者都会收到通知并且自动更新

                  依赖简单说就是一个类A的对象作为一个类B的局部变量使用时,就说类B依赖类A

它也叫主题/订阅模式,可以看成报纸的订阅

观察者就是订阅者,报纸就是主题,当报纸更新的时候,需要通知订阅者

订阅者这里应当具有获取想要的数据的能力!防止出现垃圾信息(无用的信息)

该书中使用了另一个例子作为分析,就是气象站的数据应用程序实例

WeatherData对象获取气象站的数据,气温、湿度、气压等数据

之后使用三个布告板显示这些数据以及处理之后的数据

这里的观察者就是布告板,WeatherData是主题


讲了两种实现的方式:一推一拉

推者,主题将更新的通知发送给观察者  

推的方式的实现:主要是当数据发生改变直接将链表集合中的每个观察者通知并更新数据

拉者,观察者从主题获取想要的数据

拉,观察者占据主动!使用的JAVA内置观察者模式,里面的观察者Observable是类,

拉的话主动调用update()方法更新数据,可以控制时间,可以每个一段时间,看看有没有数据更新,没有更新就不改变

        有更新的话就改变显示



参考:

1、类的关联以及依赖

http://www.cnblogs.com/iyangyuan/archive/2013/06/16/3138463.html

2、设计模式学习笔记

http://www.cnblogs.com/wangjq/archive/2012/07/12/2587966.html


posted @ 2016-06-11 17:09  cloudren2020  阅读(88)  评论(0编辑  收藏  举报