观察者模式(发布订阅)
观察者模式(发布订阅)
定义
发布订阅模式又叫观察者模式,它定义了对象间的一种一对多的依赖关系,当一个对象的状态改变时,所有依赖于(订阅)它的对象都将得到通知,在 JS 中,我们一般用事件模型回调来替代传统的发布订阅模式
可以用来通信,和同步状态更新,架构上来看不管是 MVC 还是 MVVM 都少不了发布订阅的影子
优点
- 时间上的解耦
- 对象之间的解耦
缺点
- 创建订阅者本身要消耗一定的时间和内存,当订阅一个小希后,也许此消息最后都为变更,但这个订阅者会始终存在于内存中
- 发布订阅模式虽然可以弱化对象之间的联系,但如果过度使用的话,对象和对象之间的必要联系也将被埋在背后,会导致程序难以理解和维护,特别是有多个发布者和订阅者嵌套在一起的时候,要跟踪一个 bug 就不轻松了
事件模型
除了常说的捕获事件、冒泡事件这两种 html 模型外,还有根据 JS 前端框架自身采用的响应式模型有关,通过自定义事件模型队列,依序触发,实现发布订阅的效果