【D1n910】第 17 章 通信卫星 —— 观察者模式《JavaScript 设计模式》
正常操作,正常分析,大家好,我是D1n910。
今天我继续来学习 《JavaScript 设计模式》的第四篇 行为型设计模式
这是一个连续的读书笔记,所以如果你之前的内容没有看的话,可以去看看(建议直接看书,当然书的例子都比较早了,是2015年之前的代码内容,过了六年了,前端发展了很多,比如类的声明可以直接用 Class 了)。
直接查看目录就可以查看到所有的系列文章啦。

这里再次感谢 《Javascript 设计模式》及其作者 张荣铭,专栏内容是在它的基础上生成的。
现在会觉得很多设计模式离我们有点遥远,是因为我们现在都在用大佬写好的框架吧,很多设计模式都包含在框架里了。
后面有机会的话,我希望我可以查看目前主流框架的源代码,然后进行讲解。

第四篇 行为型设计模式
行为型设计模式用于不同对象之间职责划分或算法抽象,行为型设计模式不仅仅涉及类和对象,还涉及类或对象之间的交流模式并加以实现。
第 17 章 通信卫星 —— 观察者模式
观察者模式(Observe): 又被称作发布-订阅者模式或者消息机制,定义了一种依赖关系。解决了主体对象与观察者对象之间功能的耦合。
嘿呀,这就是我最感兴趣的模式之一了!因为之前学过Redux,里面的实现原理有观察者模式。
在我们的页面上,不同模块之间通常会有联动效果。
场景是:一个消息发布框。工程师 A 实现了编辑消息框,工程师 B 实现了消息列表,工程师 C 实现了消息通知。
希望在【编辑消息框】后,点击发送,能够同时更新【消息列表】,又进行【消息通知】。
这里我们就可以引入观察者模式来很方便地实现我们的需求。
观察者模式的核心就是观察者,它有下面三个主要的内容:
观察者允许方法订阅事件;
观察者观察事件是否发生,如果事件发生了,就执行事件对应的方法;
观察者允许方法取消订阅事件。
根据这些上面的内容,实现的观察者对象大体如下:

我们再具体实现这三个方法
订阅消息
订阅消息这里将方法推入到该消息的执行方法队列中;

发布消息
触发发布消息以后,会遍历执行订阅消息的方法队列。

移除订阅
可以根据消息以及要取消订阅的函数,遍历方法队列进行删除消息订阅

应用观察者模式
我们可以实现一个简单的聊天室功能。



最终效果如下:

本章 End
加油加油
2021年02月24日 D1n910 学习于南山后海