Head First: 观察者模式
来源:互联网 发布:诺基亚n9刷机软件 编辑:程序博客网 时间:2024/06/06 12:32
1. 出版者+订阅者=观察者模式
如果你了解报纸的订阅是怎么回事,其实就知道观察者模式是怎么回事,只是名称不太一样:出版社称为“主题(Subject)”,订阅者称为“观察者(Observer)”。
2. 定义观察者模式
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖都会收到通知并自动更新。
3. 观察者模式的类图
4. Java实现观察者模式
/** * 观察者统一需要实现的接口 */public interface Observer {public void update(String info);}/** * 主题需要实现的接口 */public interface Subject {/** * 注册观察者 */public void registerObserver(Observer o);/** * 删除(取消)观察者 */public void removeObserver(Observer o);/** * 通知观察者接受数据 */public void notifyObservers();}/** * 实现了主题接口的数据源 * @author zhangshaoliang * */public class DataSource implements Subject {/** 观察者列表 */private ArrayList observers;/** 数据信息 */private String info;public DataSource() {observers = new ArrayList();}@Overridepublic void registerObserver(Observer o) {observers.add(o);}@Overridepublic void removeObserver(Observer o) {int pos = observers.indexOf(o);if (pos >= 0) {observers.remove(pos);}}@Overridepublic void notifyObservers() {for (Object o : observers) {((Observer)o).update(info);}}private void onDataUpdated() {notifyObservers();}/** * 数据源更新数据 */public void setData(String newInfo) {this.info = newInfo;onDataUpdated();}}/** * 具体的一个观察者 * */public class DataReader implements Observer {private String mInfo;private Subject mDataSource;public DataReader(Subject dataSource) {mDataSource = dataSource;mDataSource.registerObserver(this);}public void display() {System.out.println("info:" + mInfo);}@Overridepublic void update(String info) {mInfo = info;display();}}/** * 测试类 */public class ObserverTester {/** * 测试方法 */public void test() {DataSource dataSource = new DataSource();DataReader dataReader = new DataReader(dataSource);dataSource.setData("News->Survivor: We hid behind ice");dataSource.setData("News->Boy stumbles upon ancient tooth");dataSource.setData("News->The 2014 Pritzker Prize");}}
0 0
- Head First: 观察者模式
- Head First 观察者模式
- 《Head First-Chapter2》观察者模式
- head first 设计模式:观察者模式1
- Head First设计模式-观察者模式
- 《Head First 设计模式》观察者模式
- Head First 设计模式笔记--观察者模式
- 《Head First 设计模式》之观察者模式
- Head First 设计模式2 观察者模式
- 《Head First 设计模式》之观察者模式
- <Head First 设计模式>:观察者模式--Weather
- Head First设计模式—观察者模式
- 【Head First设计模式-读书笔记】观察者模式
- Head First设计模式---策略、观察者模式
- Head First 设计模式-观察者模式
- 《Head First设计模式》 - 观察者模式
- head first设计模式之观察者模式
- Head First-设计模式:观察者模式
- android中的Fragment
- proc文件系统解析
- 各种排序算法分析比较
- 设置属性
- Mac下的私有API私有函数扫描
- Head First: 观察者模式
- 一段适合新手的Java代码,阅读一定有收获。
- 广义线性模型2
- 英雄杀_商鞅变法
- mxGraph web 下IE设置图片节点显示,只需修改js代码
- 协方差矩阵、相关矩阵、相关系数矩阵、相关系数之间的关系
- Go语言 指针
- 一年级上学期总结以及规划
- test