现实中的观察者模式:
报社与客户是一对多的依赖关系,客户需要报社的新闻信息,当新闻更新时,报社主动通知客户。
观察者模式定义
在实现观察者模式的过程中,要注意主题与观察者之间的耦合,松耦合的关系,令程序修改更加轻松,方便程序拓展如:只有注意实现接口,新增观察者类,新增主题类,都不用担心影响到对方。
模式实现
根据上面类图所示,实现步骤如下
1 . 定义主题接口,声明注册,注销,还有状态改变时触发notifyObserver等函数。主题接口关联依赖于多个观察者。
2 . 定义观察者接口,声明update()方法,主题notifyObserver方法将调用此方法。
3 . 具体主题实现主题接口方法,状态改变时调用notifyObserver方法,通知所有关联的观察者。
4. 具体观察者实现观察者接口方法。注册时,观察者将保持主题的引用,这样观察者就可以主动调用主题注册,注销方法。
具体实现如下