Untitled

转载自:https://segmentfault.com/a/1190000038957410

两种模型概念

观察者模式

观察者模式的定义是在对象之间定义一个一对多的依赖,当对象自身状态改变的时候,会自动通知给关心该状态的观察者。

解决了主体对象与观察者之间功能的耦合,即一个对象状态改变给其他对象通知的问题。

这种对象与对象,有点像 商家-顾客 的关系,顾客对商家的某个商品感兴趣,就被商家记住,等有新品发布,便会直接通知顾客,相信加过微商微信会深有体会。

来张图直观感受:

Untitled

可以从图中看出来,这种模式是商家直接管理顾客。

订阅发布模式

该模式理解起来和观察者模式一样,也是定义一对多的依赖关系,对象状态改变后,通知给所有关心这个状态的订阅者。

订阅发布模式有订阅的动作,可以不和商家直接产生联系,只要能订阅上关心的状态即可,通常利用第三方媒介来做,而发布者也会利用三方媒介来通知订阅者。

这有点像 商家-APP-顾客 的关系,某个产品断货,顾客可以在APP上订阅上货通知,待上新,商家通过APP通知订阅的顾客。

在程序实现中,第三方媒介称之为 EventBus(事件总线/事件调度中心),可以理解为订阅事件的集合,它提供订阅、发布、取消等功能。订阅者订阅事件,和发布者发布事件,都通过事件总线进行交互。

Untitled

🌈 两种模式的异同