什么是发布订阅模式呢?
发布订阅是一种消息模式就好像微信中的公众号,消息的发送者(发布者),不会将消息发送给特定的接收者(称为订 阅者)而是将发布的消息分为不同类别的,无需了解哪些订阅者存在,同样的 订阅者可以表达一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者存在
怎样实现一个最简单的发布订阅
其核心只有三个步骤:
- 一个数组存储订阅者
- 一个方法添加订阅者
- 一个方法通知订阅者
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}吃完饭,去散步吧`)//让他们都吃完饭,去散步
})
也可以这么理解,listenerArr里面是关注一个公众号的粉丝们 ,listener方法相当于关注了这个公众号,notice相当于公众号发布了一片文章让粉丝去看
怎样去区分发布订阅和观察者模式
观察者模式
在软件设计中 ,是一个对象,维护一个依赖列表,当状态发会改变会自动通知他们
发布订阅
用一个数组存储订阅者 ,订阅者订阅消息,发布者通知,