中介者模式

定義

增加一個中介者對象後,所有的相關對象都通過中介者對象來通信,而不是互相引用。當一個對象發生改變時,只需要通知中介者對象即可。

要點

  • 中介者模式使網狀的多對多關係變成了相對簡單的一對多關係。
  • 實現中介者對象的方式:在中介者對象中開放一些接收消息的接口,各對象可以直接調用該接口來給中介者發送消息,同時傳遞讓中介者可以識別發送者的參數。中介者接收到消息之後進行處理,並將結果反饋給其它對象。(中介者中有所有對象的引用)
  • 中介者模式是迎合「最小知識原則」的一種實現,指一個對象應該儘可能少地瞭解另外的對象。各個對象只需關注自身功能的實現,對象之間的交互關係交給了中介者對象來實現和維護。
  • 中介者模式最大的缺點是系統中會新增一個中介者對象,而且它自身往往就是一個難以維護的對象。
  • 中介者模式可以很方便地對對象進行解耦,但對象之間並非一定要解耦。在實際項目中,模塊或對象之間有一些依賴關係是正常的。畢竟我們寫程序是為了快速完成項目交付生產,而不是堆砌模式和過度設計。一般來說,如果對象之間的複雜耦合確實導致調用和維護出現了困難,而且這些耦合度隨項目的變化呈指數增長曲線,那就可以考慮用中介者模式重構。

核心代碼

// 中介者對象開放的接收消息的接口
var mediator = (function() {
    var objects = {};       // 所有對象的引用
    operations = {};        // 中介者可以只需的操作   
    // ...

    var ReceiveMessage = function() {
        var message = Array.prototype.shift.call(arguments);
        operations[message].apply(this, arguments);
    };

    return {
        ReceiveMessage: ReceiveMessage
    };
})();

你可能感兴趣的:(中介者模式)