3

首先我想说我已经用谷歌搜索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应该知道触发消息的对象的存在?

4

1 回答 1

6

观察者模式:被观察对象管理自己的观察者列表(也称为监听器),当某个事件发生时必须通知这些观察者。

中介者模式:被观察对象不知道它的观察者列表,有一个外部实体在被观察对象和观察者之间进行映射。

于 2013-09-24T02:11:47.223 回答