本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-12-15
观察者模式(Observer):又被称作发布-订阅者模式或消息机制,比如当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。
何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。
如何解决:使用面向对象技术,可以将这种依赖关系弱化。
function Observer () {
this.message = {};
}
Observer.prototype = {
constructor: Observer,
subscribe(type, fn) {
(this.message[type]) || (this.message[type] = []).push(fn);
},
fire(type, ...args) {
if (!this.message[type]) {
return;
}
for (let i = 0, len = this.message[type].length; i < len; i++) {
this.message[type][i].apply(this, args);
}
},
remove(type, fn) {
if (this.message[type]) {
for (let i = 0, len = this.message[type].length; i < len; i++) {
if (this.message[type][i] === fn) {
this.message[type].splice(i, 1);
}
}
}
}
}
var o = new Observer();
o.subscribe('test-event', function(...args) {
console.log('data', args);
})
o.fire('test-event', { data: 123});