/**
* 订阅发布者模式(发布-订阅模式)是一种消息通信模式。
* 它定义了一种一对多的关系,让多个订阅者对象同时监听某个主题对象,
* 当该主题对象状态发生变化时,会自动将这个变化消息通知给所有订阅者对象,使它们能够自动更新自己。
主要有以下几个要素:
1. 发布者:负责发布消息的对象。
2. 订阅者:负责接收消息和执行相应动作的对象。
3. 消息:发布者发布的内容。
4. 主题:发布者和订阅者之间的媒介,用于订阅消息和通知订阅者。
*
*/
/**
* 订阅发布者模式(发布-订阅模式)是一种消息通信模式。它定义了一种一对多的关系,让多个订阅者对象同时监听某个主题对象,当该主题对象状态发生变化时,会自动将这个变化消息通知给所有订阅者对象,使它们能够自动更新自己。
主要有以下几个要素:
1. 发布者:负责发布消息的对象。
2. 订阅者:负责接收消息和执行相应动作的对象。
3. 消息:发布者发布的内容。
4. 主题:发布者和订阅者之间的媒介,用于订阅消息和通知订阅者。
*
*/
//发布者
class Publisher {
constructor() {
//订阅者列表
this.subscriberList = []
}
//订阅
subscribe(subscriber) {
this.subscriberList.push(subscriber);
}
//发布消息
publish(message) {
//通知每个订阅者去更新
this.subscriberList.forEach((sub) => {
sub.update(message);
})
}
}
//订阅者
class Subscriber {
constructor(name) {
//定义要更新的东西
this.name = name;
}
//更新消息
update(message) {
console.log(`${this.name} received message:${message}`)
}
}
//主题-发布者与订阅者之间的媒介
const pub = new Publisher();
//订阅消息
const sub1 = new Subscriber('sub1');
const sub2 = new Subscriber('sub2');
pub.subscribe(sub1);
pub.subscribe(sub2);
//发布消息
pub.publish('hello!subcriber!')
console