设计模式-观察者模式-Observer

?观察者模式-Observer

源码地址: https://github.com/mumushuiding/golang-design-pattern/tree/master/09_Observer

设计模式-观察者模式-Observer_第1张图片

 

❓ 问题

采用观察者模式,当一个对象的状态发生变化 时,它会? 通知 所有依赖它的对象。

✔️ 解决方法

一个? 可观察 对象可以被多个? 观察者 对象监督。可观察对象在运行时? 登记 观察者,当它状态发生变化时,都会? 通知 所有的观察者。

观察者模式使用两种方法把最新的状态发送给观察者:

  • 1)设计模式-观察者模式-Observer_第2张图片把新的状态 推送 给观察者
  • 2)设计模式-观察者模式-Observer_第3张图片观察者自己去 拉取 数据

⚡️类图

设计模式-观察者模式-Observer_第4张图片

 

?参与者

  • IObservable (可观察的接口)。接口中含有对观察者的? 登记 和❌ 注销 以及抽象方法取状态。
  • IObserver (观察者接口)。是可观察类(Observable)的回调接口。接口由一个观察者实现
  • ? Observable (可观察类)。包含指向观察类对象的引用列表。
  • ? Observer (观察者类)。

?评价

?优点

  • 观察者可以动态添加和删除
  • 可观察类和观察者 互不依赖

?缺点

  • 观察者过多时,发布消息需要消耗过多时间

你可能感兴趣的:(go,设计模式,设计模式,观察者模式,observer,golang,design,pattern)