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