设计模式In Android——观察者(Observer)模式_1
来源:互联网 发布:上海日上免税店有mac 编辑:程序博客网 时间:2024/06/15 06:39
写在前面的话:
1,记录学习的过程,希望能够坚持下去。
2,代码Based On Android4.4;主要参考书籍《Head First 设计模式》
什么是观察者模式?
定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。怎么设计一个观察者模式的程序?
确定两个核心对象:(《Head First》Chapter 2)
a.主题(Subject.java,WeatherData.java):要实现register()/unregister(),notify()方法
b.观察者(Observer.java,CurrentConditionDisplay.java/StatisticsDisplay.java):要实现update()方法确定这两个对象之间的关系:
主题对象管理某些数据,一旦数据发生改变,会主动向观察者进行通知,然而观察者不必向主题进行索取。
主题并不知道具体的观察者是谁,这是它们之间的关系。原则
- 观察者模式是体现了“针对接口编程,而非针对实现编译”;
所以针对接口编译,我认为是把接口(Subject)或者接口的实现(WeatherData)作为参数,如public CurrentConditionsDisplayer(Subject weatherData) - 使用观察者模式的布告板可以动态的添加(register)。
- 为了交互对象之间的松耦合设计而努力
- 观察者模式是体现了“针对接口编程,而非针对实现编译”;
静态类图
代码实现
在测试类中,实例化一个WeatherData
WeatherData wd = new WeatherData(); CurrentConditionsDisplayer ccd = new CurrentConditionsDisplayer(wd); wd.setMeasurementChanged(28, 90, 134.0f);
在CurrentConditionsDisplayer的构造方法中,会调用WeatcherData.registerObserver方法,把已经注册进去。
在WeatherData.java实现registerObserver方法,就是把
@Override public void registerObserver(Observer o) { // TODO Auto-generated method stub observers.add(o); }
在进行数据传递的方法notify()方法中,会遍历ArraryList逐个调用update()方法通知。
WeatherData.java
@Override public void notifyObserver() { // TODO Auto-generated method stub for(int i=0; i<observers.size(); i++){ Observer _o = (Observer)observers.get(i); _o.update(temperature, humidity, pressure); } }
CurrentConditionsDisplayer.java中去显示
@Override public void update(float temp, float humiditiy, float pressure) { // TODO Auto-generated method stub this.temp = temp; this.humidity = humiditiy; this.pressure = pressure; displayer(); }
代码下载:代码
下节学习一下在Android里面,哪里使用Observer模式。
- 设计模式In Android——观察者(Observer)模式_1
- 设计模式—观察者模式(Observer)
- Java设计模式—观察者(Observer)
- Android与设计模式——观察者(Observer)模式
- 设计模式——观察者模式 Observer
- 设计模式——观察者模式(Observer )
- 设计模式——观察者模式(Observer)
- Java设计模式—观察者模式(Observer)
- 设计模式之 — Observer 观察者模式
- JAVA设计模式—观察者模式(Observer)
- 设计模式之——观察者模式(Observer)
- java设计模式15——观察者模式(Observer)
- 设计模式——观察者模式(Observer)
- 设计模式——观察者模式(Observer Pattern)
- Java设计模式——观察者模式(Observer)
- 设计模式(17)——观察者模式(Observer Pattern)
- 设计模式 —— 观察者模式(Observer Pattern)
- Java设计模式——观察者模式(Observer Pattern)
- Selenium WebDriver java 简单实例
- Oracle中connect by...start with...的使用
- 录制脚本badboy工具使用手册
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- 客户端开发与服务器端开发的区别
- 设计模式In Android——观察者(Observer)模式_1
- IT圈持续部署并不是毫不费力 确是不平凡
- 变量名与关键字
- 利用半透明对话框实现新浪微博android客户端首次运行时的提示界面
- 进制
- 设计模式-----策略模式
- 网络操作与AFNetworking
- “基于485总线的评分系统”
- 【28系列DSP小结-2】cmd文件