发布订阅者模式
人物:订阅者,发布者
订阅者:添加订阅者,存储订阅者
发布者:发布信息
1.添加订阅者,创建同类型容器(数组),存储同类型订阅者,同时将回调传入数组
2.发布者获取不同类型的容器(数组),进行循环,然后调用其回调,进行发布
const obj = {
// 存储订阅者
userList: {},
// 添加订阅者
addUser (key, callBack) {
const { userList } = this // 解构存储订阅者列表
if (!userList[key]) { // 对不同类型的订阅者进行分类
userList[key] = []
}
userList[key].push(callBack) // 订阅者传入的回调放入数组
},
// 发布者,给订阅者发布信息
publish (key, opt) {
const arr = this.userList[key] // 获取订阅者列表
arr.forEach(item => { // 循环每一名订阅者的回调,进行调用(发布)
item(opt)
})
}
}
// 添加订阅者
obj.addUser('m20', opt => {
console.log('小白:', opt)
})
obj.addUser('m20', opt => {
console.log('小黑:', opt)
})
obj.addUser('m40', opt => {
console.log('小黄:', opt)
})
// 订阅者发布信息
obj.publish('m20', '1000万')
obj.publish('m40', '2000万')