美文网首页
发布-订阅者模式

发布-订阅者模式

作者: Poppy11 | 来源:发表于2022-03-19 15:37 被阅读0次

什么是发布-订阅者模式

  • 发布—订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。
  • 举个例子,售楼处卖房,那么售楼处要发布房型信息,那么它是发布者,中介关注房型,所以中介是订阅者,当售楼处发布消息之后或者房型信息更新之后,中介就会收到消息,去做某件事情,而这个事情就是去通知客户。这么做的好处是:客户不用关心房型,不用和任何一家售楼处保持紧密的联系,只需要与某个中介联系,但是他可以通过中介知道所有房型的变化。所有客户与售楼处是没有耦合关系的。

代码

  • 首先我们需要维护一个消息队列。
  • 用户可以订阅,取消订阅,以及消费
 class Observer {
            constructor() {
                this.message = {}
            }

            on(messageName, fn) {
                if (!this.message[messageName]) {
                    this.message[messageName] = []
                }
                this.message[messageName].push(fn)
            }

            off(messageName, fn) {
                if (!fn) {
                    delete this.message[messageName]
                    return
                }
                if(!this.message[messageName]) return
                this.message[messageName] = this.message[messageName].filter(message => message !== fn)
            }

            emit(messageName) {
                if (!this.message[messageName]) {
                    throw new Error(`消息队列没有${messageName}`)
                }
                this.message[messageName].forEach(message => {
                    message()
                })
            }
        }

        function handleA(){
            console.log("handleA")
        }

        const person1 = new Observer()
        person1.on("liam", handleA)
        person1.on("liam", () => {
            console.log("触发回调1")
        })
        person1.off("liam", handleA)

        person1.emit("liam")
        console.log(person1)

相关文章

  • 设计模式之发布订阅模式(1) 一文搞懂发布订阅模式

    目录 发布/订阅者模式的优点 实现发布/订阅者模式需要考虑的点 何时应使用发布/订阅者模式 发布/订阅者模式与观察...

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

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

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

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

  • Redis发布订阅

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

  • 观察者模式、promise基础

    1.观察者模式 发布订阅 promise redux eventBus 观察者模式(基于发布订阅的) 发布 ...

  • 观察者模式

    精髓: 观察者模式其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 ...

  • Vue响应式原理——初体验

    发布-订阅模式(观察者模式) 首先,不要被发布-订阅者模式这个鬼名字给整蒙了,由于最开始我没整明白,发布者、订阅者...

  • 观察者模式&&订阅发布模式

    观察者模式&&订阅发布模式 参考:知乎-观察者模式 vs 发布订阅模式[https://zhuanlan.zhih...

  • 发布订阅和观察者模式的区别

    有些人认为观察者模式就是发布订阅模式,实际上观察者模式是包含了订阅发布模式,发布订阅模式只是观察者模式中的一种。观...

  • redis 学习(12)-- redis 发布订阅

    redis 发布订阅 发布订阅模式中的角色 发布者(publisher) 订阅者(subscriber) 频道(c...

网友评论

      本文标题:发布-订阅者模式

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