观察者模式是行为型模式中的一种。

该模式用于:应用程序对某个对象状态变更感兴趣,并希望该对象状态在每次变更都能及时的收到通知。被观察的对象称为主题,观察这个对象的一堆对象称为观察者。

在GOF中定义如下

建立对象与对象之间的一对多关系, 当一个对象的状态发生变化时,依赖该对象的所有对象都收到通知并自动更新

主题对象包含一堆观察者,时时刻刻装备等待着主题的状态变更,主题对象需要向应用程序提供增加和删除观察者, 以及当状态发生变化时通知观察者的接口

观察者需要提供接口去设置自己感兴趣的观察对象(主题),以及能够使主题对象及时通知自己状态变更的接口

在Java的世界中,该模式应用还是挺广泛的。
JMS(Java Message Service) 将观察者模式和中介者模式结合在一起,从而使应用程序之间互相订阅和发布消息

MVC(Model-View-Controller) 框架中,模型属于主题,视图属于观察者,在模型发生变化时,视图立刻收到通知从而更改相关的状态

Java标准库中有提供了 java.util.Observable(主题)类和Java.util.Observer(观察者)接口,来实现生产者模式

留言

Aug 25 2015