观察者模式(发布订阅模式)的实现方式及应用场景
观察者模式(发布订阅模式)的实现方式及应用场景 简述 发布订阅模式的概念:当一个或多个对象依赖于某一个对象,当这个对象的状态发生改变,所有依赖于它的对象都得到状态改变的通知。 一个简单的示例: // 主体 class Subject { constructor() { this.state = 0 this.observers = [] } getState() { return this.state } setState(state) { this.state = state this.notifyAllObservers() } notifyAllObservers() { this.observers.forEach(item => { item.update() }) } attch(observer) { this.observers.push(observer) } } // 观察者 class Observer { constructor(name, subject) { this.name = name this.subject = subject this.subject.attch(this) } update() { console.log(`${this.name} update, state: ${this.subject.getState()}`) }