美文网首页高级JS前端
JavaScript设计模式--观察者与发布订阅

JavaScript设计模式--观察者与发布订阅

作者: 习惯水文的前端苏 | 来源:发表于2021-12-19 01:46 被阅读0次

设计模式导航


\bullet 观察者模式

    \ast 目标

        模块间共同依赖一个属性做实时通信

    \ast 应用场景

        响应式

    \ast 代码实现

        这是一种一对多的关系,假设有一个下拉选择的选项分别为a、b、c、d,当其下拉值为c时,页面的button按钮要置灰,p标签的内容要加粗,strong标签的在同时符合type=1时内容要显示为正常

\bullet 发布订阅模式

    \ast 目标

        将观察者与目标解耦,做进一步控制

    \ast 应用场景

       eventBus、公众号的消息订阅、vue响应式

    \ast 代码实现

        在观察者模式中,我们让目标对象去向观察者发布更新通知,让观察者去订阅了目标,这让两者高度耦合且当目标对象值发生改变时必须实时通知到每一个订阅者。这是不合理的,因为当type不为1的时候是不需要通知strong的

        因此,在发布订阅者中,我们使用事件中心来进行消息调度,目标对象向事件中心发布更新通知,事件中心根据接收的更新通知向订阅者发布更新。当type不为1时直接忽略strong

(new Observer的过程其实就是去订阅改变,select就是发布者,center就是调度中心; vue2中递归observer进行Object.defineProperty.get的过程相当于watcher在订阅data变化,当Object.defineProperty.set时相当于data要发布变化通知,此时通过事件中心dep进行notify广播到每一个watcher )

    除此之外,eventBus也是一个典型的发布订阅模式

(绑定事件的过程其实就是在订阅改变,只不过这个订阅的目标对象不明朗)

相关文章

  • JavaScript设计模式六(发布-订阅模式)

    JavaScript设计模式六(发布-订阅模式) 发布-订阅模式又叫做观察者模式,定义: 定义对象间的一种一对多的...

  • 观察者模式js实现

    参看书籍JavaScript模式第七章设计模式我的理解:观察者模式又叫订阅/发布模式。被观察者(发布者)内部需要有...

  • 发布-订阅模式

    摘自《JavaScript设计模式与开发实践》 发布 - 订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关...

  • 8发布-订阅模式

    来源:JavaScript设计模式与开发实践 发布-订阅模式:又叫观察者模式,它定义对象间的一种一对多的依赖关系,...

  • 发布订阅模式(观察者模式)

    发布订阅模式(观察者模式) 发布订阅也叫观察者模式 发布 && 订阅 使用

  • RxJava基础—观察者模式

    设计模式-观察者模式 观察者模式:观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式...

  • JS设计模式-观察者模式

    观察者模式 包含发布订阅 与发布订阅的区别 : 发布和订阅是没有关系的,观察者模式观察者和被观察者是有关系的,观察...

  • 17.第四篇:观察者模式

    本文摘自 《JavaScript 设计模式》张容铭 著 版权归原作者所有 观察者模式:又被称作发布-订阅者模式或消...

  • 中介者模式

    观察者与订阅/发布模式的区别 1.观察者模式中观察者必须对主题进行订阅后,才能收到主题的事件。 2.订阅/发布模式...

  • javascript设计模式

    设计模式 观察者模式参考:汤姆大叔的博客 观察者模式又叫发布订阅模式(Publish/Subscribe),它定义...

网友评论

    本文标题:JavaScript设计模式--观察者与发布订阅

    本文链接:https://www.haomeiwen.com/subject/ixddfrtx.html