观察者模式 和 发布订阅模式

一直以为观察者模式和发布订阅模式都是为代码解耦设计的同一种模式:

Publishers + Subscribers = Observer Pattern

但实际上是有区别的:

观察者模式:一个对象(观察者)订阅另一个对象(主题),当主题被激活的时候,触发观察者里面的事件。

image.png

发布订阅模式:订阅者把自己想要订阅的事件注册到调度中心,当发布者发布事件到调度中心(就是该事件被触发),再由调度中心统一调度订阅者注册到调度中心的处理代码。

image.png

对比一下:

image.png

可以发现两种模式下的角色数量不一样:

  • 观察者模式里,只有两个角色:观察者被观察者
  • 发布订阅模式里,却不仅仅只有发布者订阅者两个角色,还有一个调度中心

从使用场景上:

  • 观察者模式比较适合在单个应用内部使用
  • 发布订阅模式则是比较适合跨应用的场景
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享