javascript mediator vs观察者

时间:2013-09-24 01:55:05

标签: javascript observer-pattern mediator

首先,我想说我用谷歌搜索javascript mediator vs observer并阅读了近十个链接。

我也在statckoverflow中搜索,我得到了这个Mediator Vs Observer Object-Oriented Design Patternsmediator-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是否应该知道触发消息的对象的存在?

1 个答案:

答案 0 :(得分:6)

观察者模式:观察对象管理自己的观察者列表(也就是侦听者),当某个事件发生时必须通知他们。

介体模式:观察对象无法识别其观察者列表,有一个外部实体可以在观察对象和观察者之间进行映射。