// 被关注的对象
var data = {
// 被关注的变量
money: 1000,
// 存放观察者对象的数组
observes:[],
// 通知观察者对象
notifyAll() { // 遍历调用观察者们的notify方法,即发出通知
this.observes.forEach((item)=>{
item.notify()
})
},
// 修改属性,并执行 发出通知 的方法
setMoney(money){
// 修改money属性值
this.money = money
// 发出通知
this.notifyAll()
}
}
// 观察者对象1
var obj1 ={
money: '',
notify(){
this.money=data.money
console.log(`data中的value变成了${data.money}`)
console.log(this.money)
}
}
// 观察者对象2
var obj2 ={
money: '',
notify(){
this.money=data.money
console.log(`data中的value变成了${data.money}`)
console.log(this.money)
}
}
// 观察者对象3
var obj3 ={
money: '',
notify(){
this.money=data.money
console.log(`data中的value变成了${data.money}`)
console.log(this.money)
}
}
// 将观察者插入数组
data.observes.push(obj1)
data.observes.push(obj2)
data.observes.push(obj3)
// 执行修改 测试结果
data.setMoney(900)
data.setMoney(800)
观察者模式原理及演示代码
最新推荐文章于 2024-04-18 15:21:21 发布