目录

大话设计模式14:观察者模式

大话设计模式:14.观察者模式

观察者模式:定义了一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己

TL;DR:发布订阅的形式,实现更新

观察者模式结构图

优点:

  1. 接触耦合,让耦合的双方都依赖抽象

各部分组成成分及作用:

  1. Subject:主题/抽象通知者,用抽象类或接口实现。把所有对观察者对象的引用保存在一个剧聚集里,每个主题有任意数量观察者,并提供接口增删观察者对象,以及通知方法,即遍历调用每个观察者的更新方法
  2. Observer:抽象观察者,为所有具体观察者提供统一接口,在得到主题的通知时更新自己
  3. ConcreteSubject:具体主题
  4. ConcreteObserver:具体观察者

应用场景:

  1. 当一个对象的改变需要同时改变其他对象时

事件委托:

进一步,抽象通知者不应依赖抽象观察者,由客户端决定通知谁。

委托本质是引用方法的类型,为委托分配了方法,委托与方法具有完全相同的行为。

委托可以看作是函数的抽象,是函数的类,委托的实例代表一个具体的函数,一个委托可以搭载多个方法,所有方法依次被唤醒。委托对象所搭载的方法不必属于同一个类,只需参数列表和返回值类型相同