定义 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于
它的对象都会得到通知并被自动更新
类图
通用代码
优点
1. 观察者和被观察者之间是抽象耦合。如此,则不管是增加观察者还是被观察者都易扩展
2. 建立一套触发机制 观察者模式可以完美地实现链条形式
缺点
1. 一个被观察者,多个观察者,开发和调试比较复杂
2. JAVA 中消息的通知默认是顺序执行,其中一个出问题,会影响整体执行效率
3. 多级触发时的效率更加令人担忧
使用场景
1. 时间多级触发场景
2. 跨系统的消息交换场景,如消息队列的处理机制
扩展
观察者模式和责任链模式的区别:观察者模式在传播的过程中消息是随时更改的,它是由相邻两个节点协商的消息结构,而责任链模式在消息传递过程中基本上保持消息不可变