跳转至

观察者#

约 409 个字 1 张图片 预计阅读时间 8 分钟

定义#

观察者模式是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个观察该对象的其他对象。

结构#


观察者模式
  1. 发布者(Publisher) 会向其他对象发送值得关注的事件。 事件会在发布者自身状态改变或执行特定行为后发生。 发布者中包含一个允许新订阅者加入和当前订阅者离开列表的订阅构架。
  2. 当新事件发生时, 发送者会遍历订阅列表并调用每个订阅者对象的通知方法。 该方法是在订阅者接口中声明的。
  3. 订阅者(Subscriber) 接口声明了通知接口。 在绝大多数情况下, 该接口仅包含一个update更新 方法。 该方法可以拥有多个参数, 使发布者能在更新时传递事件的详细信息。
  4. 具体订阅者(ConcreteSubscribers) 可以执行一些操作来回应发布者的通知。 所有具体订阅者类都实现了同样的接口,因此发布者不需要与具体类相耦合。
  5. 订阅者通常需要一些上下文信息来正确地处理更新。 因此,发布者通常会将一些上下文数据作为通知方法的参数进行传递。 发布者也可将自身作为参数进行传递, 使订阅者直接获取所需的数据。
  6. 客户端(Client) 会分别创建发布者和订阅者对象, 然后为订阅者注册发布者更新。

评论