//被观察者
class Subject {
constructor(name) {
this.name = name;
this.observers = [];
this.status = 'happy';
}
//被观察者提供一个方法 接受观察者
attach(observer) {
this.observers.push(observer);
}
setStatus(newStatus) {
this.status = newStatus;
this.observers.forEach(o=>o.update(newStatus));
}
}
//观察者
class Observer {
constructor(name){
this.name = name;
}
update(newStatus){ // 用来通知所有的观察者状态更新了
console.log(this.name+'说:孩子'+newStatus);
}
}
let sub = new Subject('孩子');
let o1 =new Observer('父亲');
let o2 =new Observer('母亲');
let o3 =new Observer('爷爷');
let o4 =new Observer('奶奶');
sub.attach(o1);
sub.attach(o2);
sub.setStatus('bad')
输出:
父亲说:孩子bad
母亲说:孩子bad