TODO:观察者模式 Observer
- 观察者模式包含观察目标和观察者两个对象
- 一个观察目标可以有任意数目的与之相依赖的观察者
- 一旦观察目标的状态发生改变,所有的观察者都将得到通知
- 常用于事件监听,可以实现回调函数的解耦
Event = function{
var listen, log, obj, one, remove, trigger, __this;
obj = {};
__this = this;
listen = function(key,callback){
var stack, _ref;
stack = (_ref = obj[key]) != null ? _ref : obj;
return stack.push(callback);
}
}
class Subject {
constructor() {
this.observers = [];
}
add(observer) {
this.observers.push(observer)
}
remove(observer) {
this.observers = this.observers.filter(item => item !== observer);
}
notify() {
this.observers.forEach(item => {
item.update();
})
}
}
class Observer {
constructor(name) {
this.name = name;
}
update() {
console.log(`my name is:${this.name}`);
}
}
const observer1 = new Observer('observer1');
const observer2 = new Observer('observer2');
const subject = new Subject();
subject.add(observer1);
subject.add(observer2);
subject.notify();
TODO: JS Observable API