本文目的:
- 最简单的语言和代码实现来讲解观察者设计模式
- 稍微探索一下它在vue中的概念: dep、watcher到底是什么?
我理解的观察者模式:
主体有一个数组,数组包含了要被通知的对象。需要通知的时候,遍历数组通知他们。就是这么简单。。。。
最简单的实现(经典实现)
// 主体对象:管理被通知的对象
class Subject {
constructor() {
this.arr = [];
}
add(obj) {
this.arr.push(obj)
}
noticefy() {
this.arr.forEach(element => {
element.update();
});
}
}
// 子对象,拥有一个update函数
class Observe {
constructor(name) {
this.name = name
}
update() {
console.log(`this name is :${this.name}`)
}
}
var sub = new Subject();
var obj1 = new Observe('name1')
var obj2 = new Observe('name2');
sub.add(obj1)
sub.add(obj2)
sub.noticefy();
发布订阅者实现:
突然想到,如果事件多了怎么办?给每一个事件加一个标记不就解决了&#