观察者模式
有观察者与被观察者 观察者要放到被观察者中,被观察者状态发生变化时要通知观察者使其执行
观察者模式是基于发布订阅模式的 被观察者要收集观察者,状态发生变化后要通知观察者
核心代码
// 被观察者
class Subject {
constructor(name) {
this.name = name;
this.status = '开心';
this.observers = [];
}
attach(o) {
this.observers.push(o);
}
setStatus(newStatus) {
this.status = newStatus;
this.observers.forEach((o) => o.update(this));
}
}
// 观察者
class Observer {
constructor(name) {
this.name = name;
}
update(baby) {
console.log(`当前${this.name}被通知了,当前被观察的状态为${baby.status}`);
}
}
示例:
let baby = new Subject('小虎');
let parent = new Observer('我');
let parent2 = new Observer('你');
baby.attach(parent);
baby.attach(parent2);
baby.setStatus('伤心');