气象监测应用的概况
此系统中的三个部分是气象站(获取实际气象数据的物理装置)、WeatherData对象(追踪来自气象站的数据,并更新布告板)和布告板(显示目前天气状况给用户看)。
我们的工作就是建立一个应用,利用WeatherData对象获取数据,并更新3个布告板:目前状况、气象统计和天气预报。
WeatherData类
- WeatherData类中有getter方法,可以取得三个测量值:温度、湿度和气压。
- 当新的测量数据准备妥当时,measurementsChanged()方法就会被调用。
- 我们需要实现三个使用天气数据的布告板:“目前状况”、“气象统计”、“天气预报”。一旦WeatherData有新的测量,这些布告必须马上更新。
- 此系统必须可以扩展,让其他开发人员建立定制布告板,用户可以随心所欲的添加或删除任何布告板。
错误示范
问题分析:
认识观察者模式
出版者+订阅者=观察者模式
定义观察者模式
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖都会收到通知并自动更新。
松耦合的设计之所以能让我们建立有弹性的OO系统,能够应对变化,是因为对象之间的互相依赖降到最低。
设计气象站
源码:https://github.com/chentianming11/design-pattern
observer包!