观察者模式(Observer Pattern)
1 2 3 |
定义:当一个对象被修改时,则会自动通知它的依赖对象。 目的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 场景:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
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') |