设计模式 - 观察者模式.doc
《设计模式 - 观察者模式.doc》由会员分享,可在线阅读,更多相关《设计模式 - 观察者模式.doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、设计模式读书笔记-观察者模式 学习设计模式已经有段时间了,这是总结的第一篇博客,文中有错误、漏洞之处,望各位支出,改正。 观察者模式 一、基本定义 何谓观察者模式?观察者模式定义了对象之间的一对多依赖关系,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新。 在这里,发生改变的对象称之为观察目标,而被通知的对象称之为观察者。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,所以么可以根据需要增加和删除观察者,使得系统更易于扩展。 观察者模式又称为发布-订阅模式。 二、基本结构 首先先看观察者模式的UML类图。 分析: Subject:目标。他把所有对观察者对戏
2、的引用保存在一个聚集里,每一个主题都可以有多个观察者。 Observer:观察者。为所有的具体观察者定义一个接口,在得到主题的通知时能够及时的更新自己。 ConcreteSubject:具体主题。将有关状态存入具体观察者对象。在具体主题发生改变时,给所有的观察者发出通知。 ConcreteObserver:具体观察者。实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题状态相协调。 三、实现观察者模式 情景是这样的:在气象观测站中,它能够追踪目前的天气状况,包括温度、适度、气压。需要实现一个布告板,能够分别显示目前的状态,气象统计和简单的预报。当气象站中获取最新的测量数据时,三种布告板必
3、须实时更新。 下面是这个案例的设计图: 编码实现: 主题接口 Subject.java1 public interface Subject 2 /* 3 * 注册观察者 4 * param observer 5 */ 6 public void registerObserver(Observer observer); 7 8 /* 9 * 删除观察者10 * param observer11 */12 public void removeOberver(Observer observer);13 14 /*15 * 当主题状态发生改变时,这个方法需要被调用,以通知所有观察者16 */17 pu
4、blic void notifyObserver();18 观察者接口 Observer.java1 public interface Observer 2 public void update(float temp,float humidity,float pressure);3 布告板显示接口 DisplayElement.java1 public interface DisplayElement 2 public void display();3 WeatherData实现主题接口 WeatherData.java1 public class WeatherData implements
5、 Subject 2 private List observers; 3 private float tempterature; 4 private float pressure; 5 private float humidity; 6 7 public WeatherData() 8 observers = new ArrayList(); 9 10 11 Override12 public void notifyObserver() 13 for(int i = 0; i = 0)28 observers.remove(i);29 30 31 32 /*33 * 气象站得到更新的观测数据时
6、,通知观察者34 */35 public void measurementChanged()36 notifyObserver();37 38 39 public void setMeasurements(float temperature,float humidity,float pressure)40 this.tempterature = temperature;41 this.humidity = humidity;42 this.pressure = pressure;43 measurementChanged();44 45 布告板 CurrentCondituonDisplay.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计模式 观察者模式 设计 模式 观察者
限制150内