“ 在上一章节中介绍了观察者模式和发布订阅模式的概念和区别,接下来在这篇文章中我将带领大家自己手动封装这两种模式,其实它们的封装是很简单的。”
如果你没有看过上一篇关于观察者模式和发布者模式的概念和区别,那么你可以转至下面这篇链接,然后看完之后再来回顾这篇文章,效果可能会更好哟!
你真的了解观察者模式和发布订阅模式?
在写观察者模式之前,我们需要把思路滤一下:
首先我们应该封装Subject被观察者类、Observer观察者类;
Observer观察者类在初始化时需要设置name值用于区分,接着会有一个update方法,它的作用是监听到变化后处理的逻辑;
Subject被观察者类在初始化的时候设置一个observers的数组,它的作用是用来存储观察者,接着在Subject类中会有add添加观察者方法、remove删除观察者方法、notify通知观察者方法。
接下来就是放代码的时刻:
1 | /** |
发布订阅模式其实思路和观察者模式很相似,只是它多了一个第三方的中间调度,我们可以添加一个queue来存储我们的订阅,由于订阅相同的主题可以有多个函数执行,因此我们需要使用数组来存储这些函数。
1 | class PubSub { |
感谢segmentfault上的这位作者
JavaScript设计模式——观察者模式 vs 发布订阅模式