美文网首页
前端设计模式-订阅发布者

前端设计模式-订阅发布者

作者: 孙新强 | 来源:发表于2019-08-18 12:31 被阅读0次

定义

发布-订阅者模式它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的值都将得到通知

  • 在JavaScript中一般用事件模型来代替传统的订阅-发布者模式

模型

1948637-93095ddc48adb80e.png

优点

  1. 对象间功能解耦,弱化对象间的引用关系;
  2. 更细粒度地管控,分发指定订阅主题通知

缺点

  1. 对间间解耦后,代码阅读不够直观,不易维护
  2. 额外对象创建,消耗时间和内存(很多设计模式的通病)

简单实现

module.exports = class PubSub {

  constructor() {
    this.subscribers = {};
  }

  subscribe(type, fn) {
    this.subscribes[type] = this.subscribes[type] ? this.subscribes[type].push(fn) : [fn]
  }

  unsubscribe(type, fn) {
    let fns = this.subscribes[type]
    fns && (this.subscribes[type] = this.subscribes[type].filter(item => item !== fn))
  }

  publish(type, ...args) {
    this.subscribes[type].forEach(fn => fn(args))
  }

}

参考

相关文章

  • 前端设计模式-订阅发布者

    定义 发布-订阅者模式它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的值都将得到通知...

  • 利用发布/订阅来避免紧耦合

    发布订阅模式(pub/sub)是一种设计模式,消息发布者将消息按类别发布,不同订阅者根据自身需求去订阅所需的消息。...

  • 基于TableStore构建简易海量Topic消息队列

    前言 消息队列,通常有两种场景,一种是发布者订阅模式,一种是生产者消费者模式。发布者订阅模式,即发布者生产消息放入...

  • JS-简单实现发布订阅模式

    发布订阅模式主要涉及三个对象:发布者、订阅者、主题对象。 发布-订阅模式 定义  发布-订阅模式又称观察者模式,它...

  • 观察者模式(Observer)

    观察者模式又称为发布订阅模式。一个发布者对应多个订阅者,一旦发布者的状态发生改变时,订阅者将收到订阅事件。本文中涉...

  • Redis发布订阅

    发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的...

  • 观察者设计模式

    观察者设计模式是一个好的设计模式,这个模式我们在开发中比较常见,尤其是它的变形模式订阅/发布者模式我们更是很熟悉,...

  • JavaScript常见设计模式(面试篇)

    发布订阅模式 在“发布者-订阅者”模式中,称为发布者的消息发送者不会将消息编程为直接发送给称为订阅者的特定接受者,...

  • Redis教程 - Pub/Sub(发布/订阅)

    Redis提供了 基于 “发布/订阅”模式的消息机制,此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向...

  • 观察者模式js实现

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

网友评论

      本文标题:前端设计模式-订阅发布者

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