观察者模式
观察者模式
// 观察都模式必须要基于发布订阅模式 // 被观察者 class Subject { constructor(name) { this.name = name this.state = '开心' this.observers = [] // 存放所有的观察者 } attach(o) { // 保存观察者实例(订阅) this.observers.push(o) } setState(newState) { // 状态发生改变时通知观察者(发布) if (newState !== this.state) { this.state = newState this.observers.forEach(o => o.update(this)) } } } // 观察者 class Observer { constructor(name) { this.name = name } update(s) { // 获取的是被观察者的实例 console.log(`${this.name} 知道 ${s.name} 状态发生了变化`) } } let s = new Subject('小宝宝') let o1 = new Observer('爸爸') let o2 = new Observer('妈妈') s.attach(o1) s.attach(o2) s.setState('不开心')
- 观察者模式必须要有一个被观察者和N个观察者
- 观察者模式是基于发布订阅

浙公网安备 33010602011771号