二者工作原理&区别
观察者模式
- 如同实验进行的过程一般,观察者和被观察者(目标)是紧耦合的,如果目标一旦触发了事件,观察者就会立刻作出响应的举措。
发布订阅模式
- 发布者和订阅者二者之间存在一个中介,有点类似于你去app订阅喜欢的漫画一样,当漫画大大赶工出了新的一话并发布在了app上,app就会通知你:快来看漫画啦!
漫画大大和宅小吴之间是没有互动的,即发布者和订阅者之间是松耦合的。
区别
- 发布订阅模式比观察者模式多了一个调度中心;这个调度中心实现了解耦,且可以实现更细粒度的一些控制。(进行权限控制和节流操作)
- 观察者模式大多数时候是同步的,而发布-订阅模式大多数时候是异步的(使用消息队列)。
发布订阅模式的代码实现
- 需要有基本的订阅、取消订阅、发布的功能;
class PubSub {
constructor() {
this.subscribers = {
}//订阅者初始化为空
//为{订阅种类type:[订阅者队列],...,}
}
sub(type,subscriber){
//订阅
if(!Object.prototype.hasOwnProperty