class Observer{ // 观察者模式
constructor(fn){
this.update = fn
}
}
class Subject{ // 被观察者
constructor(){
this.Observers = [] // 观察者队列
}
addObserver(observer){
this.Observers.push(observer)
}
notify(){
this.Observers.forEach(item => {
item.update() //依次取出观察者,并执行观察者的update方法
})
}
}
const update = () => {
console.log('被观察者发出通知')
}
let subject1 = new Subject() // 被观察者
let observer1 = new Observer(update) // 观察者
let observer2 = new Observer(update) // 观察者
subject1.addObserver(observer1)
subject1.addObserver(observer2)
subject1.notify()