定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。
这是在很多场合下都把观察者(Observer)模式 与 发布(Publish)/订阅(Subscribe)模式这两种模式看成是等同的原因。
同时它们之间也是存在差异的,下面2个图就很清晰的表现了出来
发布/订阅模式
观察者模式
总结
-
1. 从两张图片可以看到,最大的区别是调度的地方。
虽然两种模式都存在订阅者和发布者(具体观察者可认为是订阅者、具体目标可认为是发布者),但是观察者模式是由具体目标调度的,而发布/订阅模式是统一由调度中心调的,所以观察者模式的订阅者与发布者之间是存在依赖的,而发布/订阅模式则不会。
-
2. 两种模式都可以用于松散耦合,改进代码管理和潜在的复用。