观察者模式(Observer Pattern)又叫作发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependent)模式。定义一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听,使得每当主题对象状态变化时,所有依赖它的对象都会得到通知并被自动更新,属于行为型设计模式。

基于jdk实现
public class Subject extends Observable {public void doSomething(){}}public class ConcreteObserve implements Observer {@Overridepublic void update(Observable o, Object arg) {}}public class Client {public static void main(String[] args){Subject subject = new Subject();subject.addObserver(new ConcreteObserve());subject.doSomething();}}
优点
- 一对多通信
- 推送解耦观察者与被观察者
缺点
- 循环引用
- 多观察者效率低,某个观察者阻塞引发整体阻塞(可以用异步解决)
