首先,我想说我用谷歌搜索javascript mediator vs observer
并阅读了近十个链接。
我也在statckoverflow中搜索,我得到了这个Mediator Vs Observer Object-Oriented Design Patterns和 mediator-vs-observer
但是我仍然不清楚它们之间的区别。
所以我想知道是否有人可以更清楚地解释它们?
也许是一个实例。 :)
感谢。
我试图创建一个例子,这是一个中介模式吗?
代码:
var EventMediator = {
publish: function (target, message) {
var args = Array.prototype.slice.call(arguments, 2);
var msgs = target.messages || [];
for (var i = 0; i < msgs.length; i++) {
var msg = msgs[i];
msg.callback.apply(msg.context, args);
}
},
register: function (target, message, fn) {
target.messages = target.messages || [];
target.messages.push({
context: target,
callback: fn
});
}
};
var t1 = {name: 'kk'};
var t2 = {name: 'gg'};
EventMediator.register(t1, "nameChanged", function () {
console.info("t1 name chagned");
});
EventMediator.publish(t1, "nameChanged");
在这里,我想知道Mediator
是否应该知道触发消息的对象的存在?
答案 0 :(得分:6)
观察者模式:观察对象管理自己的观察者列表(也就是侦听者),当某个事件发生时必须通知他们。
介体模式:观察对象无法识别其观察者列表,有一个外部实体可以在观察对象和观察者之间进行映射。