javascript mediator vs观察者

hgu*_*ser 3 javascript mediator observer-pattern

首先,我想说我已经用Google搜索javascript mediator vs observer并阅读了近十个链接.

我也在statckoverflow中搜索,我得到了这个Mediator Vs Observer面向对象的设计模式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");
Run Code Online (Sandbox Code Playgroud)

在这里我想知道是否Mediator应该知道触发消息的对象的存在?

sda*_*bet 6

观察者模式:观察对象管理自己的观察者列表(也称为侦听器),当某个事件发生时必须通知它们.

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