观察者模式-Observer

一、定义

定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

观察者模式又被称为发布-订阅模式(publish-subscribe)。

对于一个目标对象,其观察者可以是多个,当然也可以只有一个。

 

二、类图

 

 

Subject(目标接口)、ConcreteSubject(具体的目标)

1.一个目标对象可以被多个观察者观察
2.目标对象可以注册(register)和退订(remove)观察者
3.当目标的状态发生改变时,目标负责通知所有注册的、有效的观察者。

Observer(观察者)、ConcreteObserver(具体的观察者)

1.能够保存注册的观察者对象(具有一个容器)
2.提供注册和删除观察者的方法(注册观察者和删除观察者方法)
3.能够通知所有注册的观察者对象(提供一个通知方法)

三、实现

目标对象要维持一个观察者的列表,因为只有这样,当目标对象发生改变时,才能对注册的观察者进行通知。

 

 

四、JDK对观察者模式的支持

由于观察者模式应用的非常广泛,所以JDK提供了内置的支持。但是许多时候,自己建立这一切会更具有弹性(况且建立这一切并不是很麻烦)

 

 推模式(push)和拉模式(pull)

 

……更多设计模式的内容,可以访问Refactoring.Guru

posted @ 2017-05-31 18:01  静水楼台/Java部落阁  阅读(191)  评论(0编辑  收藏  举报