设计模式学习(三)——观察者模式
来源:互联网 发布:linux命令是否进行安装 编辑:程序博客网 时间:2024/05/21 10:52
参考书——《HeadFirst设计模式》
主题(subject)+观察者(observer)=观察者模式——解释:主题对象管理某些数据,观察者已经订阅主题。当主题内的数据改变,就会通知观察者。
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
在最基础的观察者模式中,包括以下四个角色:
- 被观察者:有一个用来存放观察者对象的容器,这个容器是被观察者类的核心,另外还有三个方法:addObserver方法是向这个容器中添加观察者对象;deleteObserver方法是从容器中移除观察者对象;notifyObserver方法是依次调用观察者对象的对应方法。这个角色可以是接口,也可以是抽象类或者具体的类。
- 观察者:观察者角色一般是一个接口,它只有一个update方法,在被观察者状态发生变化时,这个方法就会被触发调用。
- 具体的被观察者:使用这个角色是为了便于扩展,可以在此角色中定义具体的业务逻辑。
- 具体的观察者:观察者接口的具体实现,在这个角色中,将定义被观察者对象状态发生变化时所要处理的逻辑。
======================================================================================================
这个设计模式不难,以下是关于观察者模式的一些周边讨论~
1.在设计具体观察者时
public class ConcreteObserver implements ObserverI {private ConcreteObservable observable;public ConcreteObserver(ConcreteObservable observable){this.observable = observable;observable.addObserver(this);}
为什么要保存ConcreteObservable的引用呢?解释:这样做的是为了当想要不再是观察者时,如果已经有了对ConcreteObservable的引用会比较方便。P.s:这里也可以理解为是一种回调。详细参考:http://hellosure.iteye.com/blog/1130176
2.典型的观察者模式,被观察者者是将信息“推”送给观察者的。这种方式有好有坏,可以根据具体情况,让被观察者提供一些公开的getter方法,让观察者“拉”走一些自己所需的信息。
3.还可以使用java内置的观察者模式 http://www.oschina.net/code/explore/jdk16/java/util/Observable.java
0 0
- 设计模式学习(三)——观察者模式
- 设计模式学习— 观察者模式
- 设计模式学习笔记—观察者模式
- 设计模式学习之—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者模式
- 设计模式—观察者
- java设计模式之三 —— 观察者模式整理
- 设计模式笔记——(三:观察者模式 Observer Pattern)
- 设计模式之——观察者模式(三)
- 设计模式三 观察者模式
- Jabberd/XMPP 学习之四:服务器处理XML节的规则
- Greenplum环境安装配置步骤
- 更改xml文件中imageview的src属性方法
- 直线拟合
- SAP 系统的配置传输 同/异服务器之间,TR请求传输
- 设计模式学习(三)——观察者模式
- ASP.NET利用GetFiles取得目錄檔案清單,結合Array.Sort來排序檔案列表順序
- JavaScript基础
- 腾讯广研面试——后台开发
- C#语言学习笔记
- 意法半导体最新的天线调谐电路大幅提升LTE智能手机性能
- DG 读写分离
- J2EE等基础概念知识
- ioctl与unlocked_ioctl区别