JavaScript设计模式样例十四 —— 观察者模式
观察者模式(Observer Pattern)
定义:当一个对象被修改时,则会自动通知它的依赖对象。
目的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
场景:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。
class Subject { constructor () { this.state = 0 this.observers = [] } getState () { return this.state } setState (state) { this.state = state this.notifyAllObsevers() } attach (observer) { this.observers.push(observer) } notifyAllObsevers () { for (let ele of this.observers.values()) { ele.update() } } } class Observer { constructor (name, subject) { this.name = name this.subject = subject this.subject.attach(this) } update () { console.log(this.name,this.subject.getState()) } } let subject = new Subject() let observer = new Observer('observer 1', subject) subject.setState('hahaha')