什么是发布订阅模式?

136 阅读1分钟

什么是发布订阅模式呢?

发布订阅是一种消息模式就好像微信中的公众号,消息的发送者(发布者),不会将消息发送给特定的接收者(称为订 阅者)而是将发布的消息分为不同类别的,无需了解哪些订阅者存在,同样的 订阅者可以表达一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者存在

怎样实现一个最简单的发布订阅

其核心只有三个步骤:

  1. 一个数组存储订阅者
  2. 一个方法添加订阅者
  3. 一个方法通知订阅者
function Subscribe(){
            this.listenerArr=[] //存储订阅者
            this.listener=function(person){
                this.listenerArr.push(person)
            }
            this.notice=function(fn){
                this.listenerArr.forEach(item=>{
                    fn(item)
                })
            }

        }
        let p1=new Subscribe()
        p1.listener('小明')//小明订阅了
        p1.listener('小红')//小红订阅了
        p1.listener('小刚')//小刚订阅了
        p1.notice((name)=>{
            console.log(`${name}去吃饭`)//让他们都去吃饭
        })
        p1.notice((name)=>{
            console.log(`${name}吃完饭,去散步吧`)//让他们都吃完饭,去散步
        })

image.png

也可以这么理解,listenerArr里面是关注一个公众号的粉丝们 ,listener方法相当于关注了这个公众号,notice相当于公众号发布了一片文章让粉丝去看

怎样去区分发布订阅和观察者模式

观察者模式

在软件设计中 ,是一个对象,维护一个依赖列表,当状态发会改变会自动通知他们

发布订阅

用一个数组存储订阅者 ,订阅者订阅消息,发布者通知,