先举个栗子🌰
一天小明去商场买衣服,好不容易挑了一件衣服,店员说,这件衣服太火,断货了...不过过几天就会补货,你把电话写下来,补货后,我打电话通知你就行了。在这个例子中,有个几个概念:顾客小明-订阅者、店员-发布者、店员记录电话的本子-订阅者列表,因为不可能就一个人留下了电话。之后,等衣服到货后,发布者就会一次打电话通知订阅者。
日常开发中已经使用到的发布订阅模式
- addEventListener
window.addEventListener('load', function () {
console.log('loaded!')
})
页面元素加在完成后,执行回调,所以发布订阅模式里面,就是通过执行一个函数去通知订阅者.
伪代码
class Publish {
constructor() {
this.subscription = [];
}
setSubscription(subscription) {
this.subscription.push(subscription);
}
notify() {
for (const sub of this.subscription) {
sub.update();
}
}
}
const publisher = new Publish();
const customer = {
phone: '156xxx',
update() {
console.log(this.phone + ': 你的衣服到货了');
},
};
publisher.setSubscription(customer);
publisher.notify(customer);
完!