观察者模式的定义:
让多个观察者对象同时监听某一个主体对象,这个主体对象发生变化时就会通知所有的观察者对象,使得观察者对象能够自己去更新自己
例如:你是一个员工,老板发通知说明天下午团建,你就要计划明天的安排
主要结构:
一个被观察者,内部需要维护一个与所有观察它的对象数组;
多个观察者,内部必须的一个 update
函数,需要在被观察者状态更新后,作出响应。
代码实现:
<script>
// 观察者
class staff {
constructor(name, code) {
this.name = name
this.code = code
}
updated(object, evert) {
console.log(`${object.name}进行了${evert},${this.name}收到`);
}
}
// 被观察者
class boss {
// 设置观察者集合
observeList = []
constructor(name) {
this.name = name
}
// 将观察者添加到被观察者对象
add(staff) {
let flag=this.observeList.some(item => item.code == staff.code)
if(!flag) this.observeList.push(staff)
}
behavior(event) {
this.observeList.forEach(item=>{
if(item.updated) item.updated(this,event)
})
}
}
let li =new staff('李四',1) //创建观察者1
let zhang =new staff('张三',2)//创建观察者2
let wang =new staff('王二',3)//创建观察者2
let Boss=new boss('刘老板') //创建被观察者
Boss.add(li)
Boss.add(zhang)
Boss.add(wang)
Boss.behavior('通知团建')
</script>
本文就到此结束 但是为了水文章 我就给年轻人几句话
对理想主义者的几句话 说的不好勿喷
理想主义者有时候是很孤独的
马尔克斯有句话,孤独前可能是迷茫;孤独后,便是成长。我们一起成长吧。
这段文字来源于某个电视剧