发布订阅模式是一种一对多的对象对应关系,多个观察者同时监听某一个对象,当该对象发生改变时,就会执行一个发布事件,这个发布事件会通知所有的事件订阅者,事件订阅者根据得到的数据进而改变自己的状态。
一个完整的发布订阅模式,由发布者、订阅者和消息管理器组成。
示例
// 定义发布订阅对象
class PublishSubscribe {
constructor () {
// 存放订阅者回调函数
this.lists = [];
}
// 添加订阅者回调函数
addWatcherCallback (fn) {
this.lists.push(fn);
}
// 执行订阅者回调函数
executeWatcherCallback () {
for (let i = 0; i < this.lists.length; i++) {
//将参数应用于每一个回调函数
this.lists[i].apply(this, arguments);
}
}
}
// 创建一个发布者实例
let ps = new PublishSubscribe();
// 订阅数据1
ps.addWatcherCallback(function(name, age) {
console.log('我的名字:', name);
console.log('我的年龄:', age);
});
// 订阅数据2
ps.addWatcherCallback(function(name, age) {
console.log('他的名字:', name);
console.log('他的年龄:', age);
});
// 发布消息
ps.executeWatcherCallback('张三', 100);