class Subject {
constructor() {
this.observers = [];
}
add(observer) {
this.observers.push(observer);
}
remove(observer) {
let idx = this.observers.findIndex(item => item === observer);
idx > -1 && this.observers.splice(idx, 1);
}
notify() {
for (let observer of this.observers) {
observer.update()
}
}
}
class Observer {
constructor(name) {
this.name = name
}
update() {
console.log(`目标者通知我更新,我是: ${this.name}`)
}
}
let subject = new Subject();
let o1 = new Observer('o1');
let o2 = new Observer('o2');
subject.add(o1);
subject.add(o2);
subject.notify()
console