观察者模式和发布订阅模式有什么区别?

  • 发布者直接触及到订阅者的操作,叫做观察者模式
  • 发布者不直接触及到订阅者、而是由统一的第三方来完成实际的通信的操作,叫做发布-订阅模式

观察者模式,解决的其实是模块间的耦合问题,有它在,即便是两个分离的、毫不相关的模块,也可以实现数据通信。但观察者模式仅仅是减少了耦合,并没有完全解决耦合问题——被观察者必须去维护一套观察者的集合,这些观察者必须实现统一的方法被观察者调用。

观察者模式

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

发布订阅模式

发布者:增加订阅者、通知订阅者、移除订阅者
订阅者:接受发布者的调用