(Head First 设计模式)学习笔记(2) --观察者模式(气象站实例)

以下内容转载请注明来自"菩提树下的杨过(http://blog.sqlsky.com)"

应用概述:
某气象站通过传感器实时测量气温/湿度/压力等数据,要求设计一个系统,能让多种类型的公告栏自动更新这些数据(本例中有二类公告板:实时显示气温/温度公告板,动态统计最高/最低气温公告板)

解释:
应用观察者模式,把气温数据做为一个主题(也称为可观察者),让其它公告板当做观察者,通过订阅主题(也称通过观察"可观察者")来得知最新的信息(当然,观察者们也可以方便的退订,从而停止自动更新)

又一设计原则:
为了交互对象之间的松耦合设计而努力。


观察者接口
Code

公告板显示接口
Code

主题接口
Code

真正的气象数据"主题"
Code

观察者之"实时气温/湿度公告板"
Code

观察者之"动态统计最高/最低气温公告板"
Code


最终测试:
Code

运行结果:
 
当前:气温23度,湿度15%
统计:最高气温 23度 ,最低气温 23度

当前:气温28度,湿度12%
统计:最高气温 28度 ,最低气温 23度

当前:气温30度,湿度14%
统计:最高气温 30度 ,最低气温 23度

当前:气温25度,湿度20%
统计:最高气温 30度 ,最低气温 23度

当前:气温18度,湿度22%

你可能感兴趣的:(观察者模式)