码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-10-15 23:26:26      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:tps   cas   就是   std   notify   lin   需要   follow   分享   

该项目的应用场景是:

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

原理:

  技术分享图片

 

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

 

该模式的优点:

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

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

 

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

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

标签:tps   cas   就是   std   notify   lin   需要   follow   分享   

原文地址:https://www.cnblogs.com/hhachi/p/9795026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!