//定义被观察者
class Subject{
constructor(name) {
this.name = name;
//观察者列表
this.observers = [];
//被订阅的变量
this.state = ""
}
//添加观察者
attach(observer){
this.observers.push(observer)
}
//切换状态
setState(newState){
//设置被订阅的变量为新值
this.state = newState
//遍历观察者列表,执行每个观察者的update方法
this.observers.forEach(o=>{
o.update(newState)
})
}
}
//定义观察者
class Observer{
constructor(name) {
this.name = name
}
//订阅的变量变化时会执行的方法
update(newState){
console.log(`${this.name}观察到:${newState}`)
}
}
//被观察者实例
let sub = new Subject('灯')
//观察者实例
let o1 = new Observer('观察者1')
//将o1添加到观察者列表
sub.attach(o1)
//修改被订阅的变量
sub.setState("灯亮了")
JS:观察者模式
最新推荐文章于 2024-11-11 19:29:13 发布