欢迎光临散文网 会员登陆 & 注册

【D1n910】第 17 章 通信卫星 —— 观察者模式《JavaScript 设计模式》

2021-02-24 11:28 作者:爱交作业的D1N910  | 我要投稿

正常操作,正常分析,大家好,我是D1n910。


今天我继续来学习 《JavaScript 设计模式》的第四篇 行为型设计模式


这是一个连续的读书笔记,所以如果你之前的内容没有看的话,可以去看看(建议直接看书,当然书的例子都比较早了,是2015年之前的代码内容,过了六年了,前端发展了很多,比如类的声明可以直接用 Class 了)。


直接查看目录就可以查看到所有的系列文章啦。




这里再次感谢 《Javascript 设计模式》及其作者 张荣铭,专栏内容是在它的基础上生成的。


现在会觉得很多设计模式离我们有点遥远,是因为我们现在都在用大佬写好的框架吧,很多设计模式都包含在框架里了。


后面有机会的话,我希望我可以查看目前主流框架的源代码,然后进行讲解。



第四篇 行为型设计模式

行为型设计模式用于不同对象之间职责划分或算法抽象,行为型设计模式不仅仅涉及类和对象,还涉及类或对象之间的交流模式并加以实现。


第 17 章 通信卫星 —— 观察者模式

观察者模式(Observe): 又被称作发布-订阅者模式或者消息机制,定义了一种依赖关系。解决了主体对象与观察者对象之间功能的耦合。


嘿呀,这就是我最感兴趣的模式之一了!因为之前学过Redux,里面的实现原理有观察者模式。


在我们的页面上,不同模块之间通常会有联动效果。


场景是:一个消息发布框。工程师 A 实现了编辑消息框,工程师 B 实现了消息列表,工程师 C 实现了消息通知。


希望在【编辑消息框】后,点击发送,能够同时更新【消息列表】,又进行【消息通知】。


这里我们就可以引入观察者模式来很方便地实现我们的需求。


观察者模式的核心就是观察者,它有下面三个主要的内容:

  1. 观察者允许方法订阅事件;

  2. 观察者观察事件是否发生,如果事件发生了,就执行事件对应的方法;

  3. 观察者允许方法取消订阅事件。

根据这些上面的内容,实现的观察者对象大体如下:


我们再具体实现这三个方法


订阅消息

订阅消息这里将方法推入到该消息的执行方法队列中;


发布消息

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


移除订阅

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


应用观察者模式

我们可以实现一个简单的聊天室功能。


最终效果如下:

本章 End

加油加油

2021年02月24日 D1n910 学习于南山后海



【D1n910】第 17 章 通信卫星 —— 观察者模式《JavaScript 设计模式》的评论 (共 条)

分享到微博请遵守国家法律