SOURCE

/**
 * 订阅发布者模式(发布-订阅模式)是一种消息通信模式。
 * 它定义了一种一对多的关系,让多个订阅者对象同时监听某个主题对象,
 * 当该主题对象状态发生变化时,会自动将这个变化消息通知给所有订阅者对象,使它们能够自动更新自己。

主要有以下几个要素:
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 命令行工具 X clear

                    
>
console