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

Posted willem_chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了观察者模式 vs 发布订阅模式相关的知识,希望对你有一定的参考价值。


场景

有一回面试,面试官问:

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

我脑海中立刻闪现了《设计模式》里讲的:

Publishers + Subscribers = Observer Pattern

“它们是一样的。”,我故作镇定,嘴角露出一丝微笑,仿佛下一秒钟面试官就会给我发offer。

面试官也笑了,“不,它们不一样”。

然后我就:

So, 为什么我错了?观察者模式(Observer pattern),和发布订阅模式(Publish–subscribe pattern),到底有什么不同?

观察者模式

所谓观察者模式,其实就是为了实现松耦合(loosely coupled)。

用《设计模式》里的气象站为例子,每当气象测量数据有更新,changed()方法就会被调用,于是我们可以在changed()方法里面,更新气象仪器上的数据,比如温度、气压等等。

但是这样写有个问题,就是如果以后我们想在changed()方法被调用时,更新更多的信息ÿ

以上是关于观察者模式 vs 发布订阅模式的主要内容,如果未能解决你的问题,请参考以下文章

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

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

观察者模式 vs 发布-订阅模式

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

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

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