观察者模式
作者:互联网
观察者模式
class Subject { constructor(name) { this.name = name this.observers = [] // 存放观察者 this.state = '敲螺丝' } attach(o) { this.observers.push(o) // 收集观察者 } setState(newState) { this.state = newState this.observers.forEach(o => o.update(this)) // 通知观察者 } } // 观察者 class Observer { constructor(name) { this.name = name } update(s) { console.log(`我是${this.name} 我知道你 ${s.state}`) } } const baby = new Subject('打工人') const boos = new Observer('boos') const hr = new Observer('HR') baby.attach(boos) baby.attach(hr) setTimeout(() => { baby.setState('毕业了') }, 3500)
- 创建 Subject 被观察者实例 + Observer 观察者实例
- 调用被观察者的 attach 方法,将观察者保存到 this.observers = [] 中
- 调用被观察者的 setState 方法,修改自身的 state 并遍历保存在 this.observers 中的所有观察者,依次调用每个观察者的 update 方法并将被观察者作为参数传递进去
标签:name,观察者,模式,observers,attach,state,baby 来源: https://www.cnblogs.com/xiebenyin-/p/16099870.html