设计模式 观察者模式
本文将介绍设计模式中的观察者模式。
一、什么是观察者模式?
观察者模式又被称为发布 - 订阅模式,用于建立对象与对象之间的依赖关系,一个对象发生变化时将自动通知其它对象,以便其它对象做出相应反应。
二、实现
1. 结构
2. 角色
- Subject 目标:
- 被观察的对象
- 在目标中定义了一个观察者集合,可以放置若干个观察者,同时提供了一系列方法用于维护该集合
- 定义了通知方法
notify()
,用于通知观察者
- ConcreteSubject 具体目标
- Observer 观察者:
- 观察者将对观察目标的改变做出反应
- ConcreteObserver 具体观察者
3. 简单示例
Subject:
1 |
|
ConcreteSubject:
1 |
|
Observer:
1 |
|
ConcreteObserver:
1 |
|
三、JDK 对观察者模式的支持
在 java.util
包中,提供了 Observable 类以及 Observer 接口,可以通过它们更方便地应用观察者模式。
四、优缺点
1. 优点
- 在观察目标和观察者之间建立了一个抽象的耦合
- 符合开闭原则,增加新的观察者时无需修改代码
2. 缺点
- 如果观察目标和观察者之间存在循环依赖,将会导致循环调用
参考
- 《Java 设计模式》