梗概

  • 多个监听类使用了一个主类,当主类的某样属性变更之后,主类通知这些监听类执行更新方法

适用范围

优点

  • 观察者和被观察者是弱耦合的。
  • 建立一套触发机制。

缺点

  • 如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。
  • 如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。
  • 观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。

场景

  • 当一个抽象模型有两个方面,其中一个方面依赖于另一个方面。可以降低耦合度
  • 需要在系统中创建一个触发链,A对象的行为将影响B对象,B对象的行为将影响C对象……,可以使用观察者模式创建一种链式触发机制。
  • 应用实例:vue的响应式特性

详细

观察者模式 | 菜鸟教程