观察者模式
观察者模式指的是一个对象(Subject)维持一系列依赖于它的对象(Observer),当有关状态发生变更时 Subject 对象则通知一系列 Observer 对象进行更新。
观察者模式,其实就是为了实现松耦合(loosely coupled)。
js
class Subject {
constructor() {
this.observers = [];
}
add(observer) {
this.observers.push(observer);
}
notify() {
this.observers.forEach(ob => ob.update());
}
delete(ob) {
for (let i = 0; i < this.observers.length; i++) {
if (this.observers[i] === ob) {
this.observers.splice(i, 1);
}
}
}
}
class Observer {
constructor(name) {
this.name = name;
}
update() {
console.log(`[observer] name is`, this.name);
}
}
const sub = new Subject();
const ob1 = new Observer('ob1');
const ob2 = new Observer('ob2');
sub.add(ob1);
sub.add(ob2);
sub.notify(); //[observer] name is ob1; [observer] name is ob2
sub.delete(ob1);
sub.notify(); //[observer] name is ob2