Head First 设计模式之第一章——观察者模式

观察者模式的概述

如下图所示,观察者模式中,有两种角色,即主题与观察者(又可以叫订阅者)。主题可以发布信息,而观察者可以订阅主题的信息,当然也可以取消订阅。当主题每次更新信息时,所有观察者都可以接收到信息。观察者模式是一种广播机制,主题与订阅者是一种一对多机制。所有主题类与观察者类都是主题接口、观察者接口的具体实现。
Head First 设计模式之第一章——观察者模式

观察者模式的应用

Head First 设计模式之第一章——观察者模式

上图中是一种观察者模式的应用,目的是实现一种天气信息的订阅系统。其大概过程如下:气象站负责发布天气信息,而手机、电视、收音机这些设备订阅了气象站的天气信息,一旦气象站发布新的气象信息,手机、电视、收音机这些设备即可马上接收到最新的气象信息。

上图中,WeatherStation为气象站类,也就是观察者模式中的主题类,用于发布信息,它是实现了气象主题的接口,这个接口定义了注册观察者、去除观察者及提醒观察者三个函数。具体的实现见练习代码中的ch2文件夹中。

思考

其实可以用上述的类图来实现观察者模式,其实我觉得还可以用callback函数来实现观察者模式,或许这种方式可容易实现。