天气预报项目中的观察者模式

Posted hhachi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了天气预报项目中的观察者模式相关的知识,希望对你有一定的参考价值。

该项目的应用场景是:

  气象局需要我们构建一套系统,这系统有两个公告牌,分别用于显示当前的实时天气和未来几天的天气预报。当气象局发布新的天气数据后,两个公告牌上显示的天气数据必须实时更新。气象局同时要求我们保证程序拥有足够的可扩展性,因为后期随时可能要新增新的公告牌。
 

原理:

  技术分享图片

 

  我们用WeatherDate实现了主题接口,两个公告牌 CurrentConditionsDisplay和ForcastDisplay实现了Observer和DisplayElement接口,在他们的构造方法中会调用WeatherData中的registerObserver()方法把自己注册成观察者,并将他们保存到一个集合中。当被观察者也就是WeatherData数据变化时,会调用notifyObserver()方法通知观察者,也就是两个公告牌,并调用 Updata()方法来更新 自己的数据。

 

该模式的优点:

  1.将观察者(公告牌)和被观察者(气象局)彻底解耦,被观察者只知道观察者列表的抽象接口,被观察者不知道具体的观察者。

  2.被观察者发送通知,所有注册的观察者都会收到信息,可以实现广播机制。

 

最后附上程序的源码地址:https://github.com/BaronZ88/DesignPatterns/tree/master/src/com/baron/patterns/observer

以上是关于天气预报项目中的观察者模式的主要内容,如果未能解决你的问题,请参考以下文章

GJM: 设计模式 - 观察者模式

观察者模式

设计模式@第20章:观察者模式

玩转设计模式(观察者模式)

玩转设计模式(观察者模式)

Observer 观察者模式