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')

浙公网安备 33010602011771号