SOURCE

let observerIds = 0
let observedIds = 0

class Observer {
    constructor() {
        this.id = observerIds++
    }

    update(observed) {
        console.log(`观察者${this.id}观察到${observed.id}的变化`)
    }
}

class Observed {
    constructor() {
        this.observerList = []
        this.id = observedIds++
    }

    addObserver(observer) {
        this.observerList.push(observer)
    }

    removeObserver(observer) {
        this.observerList = this.observerList.filter(i => i.id !== observer.id)
    }

    notify() {
        this.observerList.forEach(i => {
            i.update(this)
        })
    }

}

let mObserved = new Observed();
let mObserver1 = new Observer();
let mObserver2 = new Observer();

mObserved.addObserver(mObserver1);
mObserved.addObserver(mObserver2);

mObserved.notify();

console 命令行工具 X clear

                    
>
console