2013-09-24 63 views
1

首先,我想說我已經使用GOOGLE搜索javascript mediator vs observer並閱讀了近10個鏈接。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應該知道誰觸發消息的對象的存在嗎?

回答

3

Observer模式:觀察對象管理它自己當某一事件發生,必須通知觀察員(又名聽衆)的列表

Mediator模式:所觀察到的物體是它的觀察者列表的沒有意識到,還有一個外部實體,使觀察對象和觀察者之間的映射。

+0

你能檢查我的更新嗎?我添加一個例子。 – hguser

+0

聽起來像是兩種模式之間的混合:有一箇中央調解器實體,但它將觀察者存儲在目標中,而不是保持映射本身。 – fiddler