观察者模式
class Subject {
constructor(name){
this.status = '周五'
this.name = name
this.observers = []
}
attach(ther){
this.observers.push(ther)
}
setStatus(value){
this.status = value
this.observers.forEach(item=>{
item.changeStatus(this)
})
}
}
class Observer {
constructor(name){
this.name = name
}
changeStatus(ther){
console.log(`${this.name}观察到:${ther.name}的状态${ther.status}`)
}
}
let miao = new Subject('喵喵miao')
let observerA = new Observer('observerA')
let observerB = new Observer('observerB')
miao.attach(observerA)
miao.attach(observerB)
miao.setStatus('周五下午茶时间到~')
// observerA观察到:喵喵miao的状态周五下午茶时间到~
// observerB观察到:喵喵miao的状态周五下午茶时间到~
订阅发布者模式
let e = {
_callback:[],
on(callback){
this._callback.push(callback)
},
emit(value){
this._callback.forEach(item=>{
item(value)
})
},
}
e.on(function(value){
console.log('订阅者A:',value) //订阅者A: 周五下午茶时间到~
})
e.on(function(value){
console.log('订阅者B:',value) //订阅者B: 周五下午茶时间到~
})
e.emit('周五下午茶时间到~')