设计模式学习专栏三--------观察者模式

2019-03-11  本文已影响0人  你的头发真的好长

设计模式学习专栏三--------观察者模式

场景


建立一个气象站应用, 利用WeatherData对象取得数据,并更新三个布告板: 目前状况 , 气象统计 , 天气预报

image

此系统中的三个部分是气象站(获取实际气象数据的物理装置) , WeatherData对象(追踪来自气象站的数据,并更新布告板) 和 布告板(显示目前天气状况给用户看.)

WeatherData对象知道如何跟物理气象站联系,以取得更新的数据.WeatherData对象会随即更新三个布告板的显示: 目前状况(温度 , 湿度 , 气压), 气象统计和天气预报

刚开始实现方式

image
//WeatherData构造函数  , 当新公告板加入时, 也要跟着改变
public WeatherData(CurrentConditionsDisplay currentConditionsDisplay,
                       StatisticsDisplay statisticsDisplay,ForecastDisplay forecastDisplay) {
        this.currentConditionsDisplay = currentConditionsDisplay;
        this.statisticsDisplay = statisticsDisplay;
        this.forecastDisplay = forecastDisplay;
    }

如何解决


分析可变部分

  1. 在weatherData的构造函数中 , 对布告板的加入与移除

  2. 在收到气象数据变化时, 需要通知所有已加入的布告板

观察者模式总览


定义:在对象之间定义一对多的依赖,这样一来, 当一个对象改变状态,依赖它的对象都会收到通知,并自动更新

核心代码部分

Java内置的观察者模式

参考

​ 书籍: HeadFirst设计模式

​ 代码参考地址: 我就是那个地址

上一篇 下一篇

猜你喜欢

热点阅读