设计模式之观察者模式

来源:互联网 发布:最后免费升级windows 编辑:程序博客网 时间:2024/05/28 15:15

观察者模式

概述

有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

解决问题

提供一种对象设计,让主题和观察者之间松耦合。

模式比喻

出版者+订阅者=观察者模式
(1)报社的业务是出版报纸。
(2)向某家报社订阅报纸
(3)不想看的话,取消订阅

类图

这里写图片描述

在这里WeatherData是主题,实现了Subject接口(声明了注册,移除及通知)。观察者是CurrentConditionDisplay和ForcastDisplay实现了Observer接口(表名它们是订阅者,可以进行注册及移除)。

JAVA中的使用

Observer接口和Observable类
实现Observer来表示订阅者,继承Observable来表示主题,当调用notifyObservers()时,必须调用setChanged()来表明状态已经被改变,否则无法使用notifyObservers方法。