观察者模式
当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,
解决了主体对象与观察者之间功能的耦合,即一个对象状态改变给其他对象通知的问题
代码如下:
/*
主体,被观察者, 明星
*/
class Subject{
constructor(name){
this.name = name
this.oberverList = []
}
updateMessage(message){
this.oberverList.forEach(o=>{
o.nodify(this.name+message)
})
}
add(observer){
this.oberverList.push(observer)
}
}
/*
观察者,粉丝
*/
class Observer{
constructor(name){
this.name = name
}
nodify(message){
console.log(message,this.name,'很伤心')
}
}
let start = new Subject('张三丰') //明星
let xiaoming = new Observer('小明') //粉丝1小明
let xiaoqiang = new Observer('小强') //粉丝2小强
let xiaowang = new Observer('小王') //粉丝3小王
//粉丝关注明星
start.add(xiaoming)
start.add(xiaoqiang)
start.add(xiaowang)
start.updateMessage('今天结婚!')
-------------------------------------------------------------------
当明星发生动态后,粉丝也能做出相应的动作,这就是观察者模式!