定义:对象间的一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于他的对象都会得到通知,并自动更新。
观察者模式设计要点
交互对象之间松耦合
1)观察者定义了对象之间一对多的关系
2)被观察者用一个共同的接口来更新观察者
3)观察者和被观察者用松耦合方式结合,被观察者不知道观察者的细节,只知道观察者实现了观察者接口
观察者模式的优点和缺点
优点:
1)观察者与被观察者抽象耦合,容易扩展;
2)建立了一套触发机制。
缺点:
1)循环依赖会导致系统崩溃;
2)观察者太多会浪费时间。
观察者模式解决的问题
1)定义对象之间的一对多依赖关系而不使对象紧密耦合。
2)确保当一个对象改变状态时,自动更新开放数量的从属对象。
3)一个对象应该可以通知开放式数量的其他对象。
观察者模式的UML图
参考文献
观察者模式 vs 发布-订阅模式
观察者模式(Observer)
如何使用 Java8 实现观察者模式?(上)
如何使用 Java8 实现观察者模式?(下)