中介者模式 詳解

2022-01-23 06:45:00 字數 2065 閱讀 5711

是乙個行為設計模式,它允許我們公開乙個統一的介面,系統的不同部分可以通過該介面進行通訊,而不需要顯示的相互作用;

該模式促進鬆散耦合的方式是:確保元件的互動是通過這個中心點來進行處理的,而不是通過顯示的引用彼此;

抽象中介者(abstractmediator):定義中介者和各個同事者之間的通訊的介面;

抽象同事者(abstractcolleague):定義同事者和中介者通訊的介面,實現同事的公共功能;

中介者(concretemediator):需要了解並且維護每個同事物件,實現抽象方法,負責協調和各個具體的同事的互動關係;

同事者(concretecolleague):實現自己的業務,並且實現抽象方法,和中介者進行通訊;

其中同事者是多個同事相互影響的才能叫做同事者;

比如系統和各個硬體,系統作為中介者,各個硬體作為同事者,當乙個同事的狀態發生改變的時候,不需要告訴其他每個硬體自己發生了變化,只需要告訴中介者系統,系統會通知每個硬體某個硬體發生了改變,其他的硬體會做出相應的變化;

這樣,之前是網狀結構,現在變成了以中介者為中心的星星結構;

var mediator = (function();

//訂閱乙個topic,提供乙個**函式,一旦topic被廣播就執行該**

var subscribe = function (topic, fn)

topics[topic].push();

return this;

};//發布/廣播事件到程式的剩餘部分

var publish = function (topic)

args = array.prototype.slice.call(arguments, 1);

for (var i = 0; i < topics[topic].length; i++)

return this;

};return

};}());

(function (mediator) );

}function publish()

initialize(); //初始化

publish(); //呼叫

})(mediator);

/**

* 同事

* @param mediator

* @constructor

*/function colleague(mediator)

;colleague.prototype.getmediator = function () ;

colleague.prototype.dooperation = function () ;

/** * 中介者(可以處理多個同事)

* @param colleague1

* @param colleague2

* @constructor

*/function mediator(colleague1,colleague2);/*

當乙個同事的狀態發生改變的時候,由中介者獲取到同事,並對該同事的狀態進行改變

不需要和其他同事進行互動

*/mediator.prototype.change = function (colleague) ;

mediator.prototype.setcolleague1 = function (colleague1) ;

mediator.prototype.setcolleague2 = function (colleague2) ;

避免了同事之間的過度耦合,使得中介者可以獨立的管理同事;

但是要注意使用中介者模式,因為這種模式最大的缺點就是:它會引來單一故障點,將mediator放置於模組之間可能導致效能下降,因為有些模組可能需要直接跟另個模組進行通訊;由於松耦合的關係,很難通過緊緊關注廣播來確定乙個系統如果作出反應;

中介者模式詳解

在現實生活中,常常會出現好多物件之間存在複雜的互動關係,這種互動關係常常是 網狀結構 它要求每個物件都必須知道它需要互動的物件。例如,每個人必須記住他 她 所有朋友的 而且,朋友中如果有人的 修改了,他 她 必須告訴其他所有的朋友修改,這叫作 牽一髮而動全身 非常複雜。如果把這種 網狀結構 改為 星...

中介者模式

1.中間 類 namespace intermediarypattern 成員物件需要知道是哪個中介者在通知它事情 public abstract class member 各成員間要傳送訊息 public abstract void send string msg 這個方法其實是具體實施發訊息的 ...

中介者模式

中介者模式就是在物件之間的關係很複雜時用,名如其人,就像租房的黑中介一樣,如果每個房東都拿著很多租房者的資訊很麻煩,每個租房者都要拿著很多房東的資訊也麻煩,所以需要乙個中介來拿著這些資訊,租房者只需要發出租房的請求,中介會給你介紹合適的房東,房東只需要提交房屋資料就等著中介的人帶著訪客看房拿錢就行了...