发布/订阅模式 - 学习笔记

226 阅读1分钟

之后也许要进入一个用到这个模式的项目,于是来学习,学习资料是互联网。

1. first try

第一个看的是掘金的一篇文章,通过讲解观察模式与发布订阅模式的区别,让我有一个初步的了解。

  • 观察者模式:有一个对象,被许多 observer 观察,当对象改变的时候,通过 notify 通知所有观察者这一改变。像是 MVC 架构里就常用,数据变化的时候,视图也变化。

  • pub/sub 模式:乍一看和观察者模式很像,有一个 pub,有很多 sub,但是区别在于 pub/sub 模式的两边之间没有直接通信。pub 并不会通知 sub。它们之间的联系是通过 broker 进行的(遇事不决加一层)。当 pub 发送消息的时候,比如说发送到了 broker 的 topic A 上,broker 会过滤 pub 的消息并分发给 sub,并不一定分发给所有的订阅者,而是只发送给订阅了 topic A 的订阅者。

image.png

2. 图解

如上图。
还可以参照这个 demo,加深理解。

  1. 可以看到,pub-sub 模式,一个订阅者可以订阅多个 topic,也可以多个订阅者订阅同一个话题。
  2. 此外,还可以看出,订阅者可以自由订阅和取消订阅。

3. 事件监听

实际上 js 中的 eventListener 也是一种 pub/sub 模式。