2013-09-24 5 views
1

Сначала я хочу сказать, что у меня есть googled javascript mediator vs observer и читайте почти десять ссылок.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 должен знать о EXIST объекта, который вызвать сообщение?

ответ

3

Паттерн наблюдатель: наблюдаемый объект управляет своим собственным списком наблюдателей (ака слушателей), которые должны быть уведомлены, когда происходит определенное событие.

Посредника узор: наблюдаемый объект не знает списка своих наблюдателей, есть внешний объект, который делает отображение между наблюдаемыми объектами и наблюдателями.

+0

Можете ли вы проверить мое обновление? Я добавляю пример. – hguser

+0

Звучит как сочетание между обоими образцами: существует центральный объект-посредник, но он хранит наблюдателей в мишенях, а не сохраняет отображение в себе. – fiddler