用乙個中介物件來封裝一系列的物件互動,中介者使得各物件不需要顯示地相互引用,從而使其耦合鬆散,而且可以獨立的改變它們之間的互動.
減少了各物件之間的耦合,使得可以獨立的改變或復用各個mediator或colleague
mediator控制了互動,導致mediator變的複雜
ps:
各個同事類需要知道中介者,但各個同事類並不知道彼此(各物件不需要顯示的相互引用).
主要的互動邏輯由中介者完成
在同事類中新增介面來增加中介者,導致職責缺乏單一,除非是需要複雜的互動邏輯.
示例**:
乙個colleague發訊息,乙個colleague收訊息,中介者處理互動.
// 抽象中介者abstract class mediator
public function setreceiver(colleague $colleague)
abstract public function sendmessage(colleague $colleague, $message);
}// 具體中介者
class concreatemediator extends mediator
}}// 抽象同事
abstract class colleague
}// 同事1
class colleague1 extends colleague
}// 同事2
class colleague2 extends colleague
"; }
}$mediator = new concreatemediator();
$colleague1 = new colleague1($mediator);
$colleague2 = new colleague2($mediator);
$mediator->setsender($colleague1); // 命令一般由中介者發出
$mediator->setreceiver($colleague2);
$mediator->sendmessage($colleague1, '你好');
Mediator 中介者 模式
問題 在物件導向系統的設計和開發過程中,物件之間的互動和通訊是最為常見的情況,因為物件間的互動本身就是一種通訊。在系統比較小的時候,可能物件間的通訊不是很多 物件也比較少,我們可以直接硬編碼到各個物件的方法中。但是當系統規模變大,物件的量變引起系統複雜度的急劇增加,物件間的通訊也變得越來越複雜,這時...
中介者模式(Mediator)
一 適用情況 場景中存在多個角色並且其中多個角色互相存在直接關聯,從而導致過多的強耦合和過複雜的關係網路。此時新增乙個中介者角色,其他都角色只會和中介者發生直接關聯,每個角色都通過中介者間接與其他角色進行溝通,從而化解了之前的強耦合。這裡的中介者如同我們辦公室裡的交換機 路由器,我們用的電腦就是各個...
設計模式 中介者模式Mediator
前言 模式總覽 by xingoo 使用乙個中介的物件,封裝一組物件之間的互動,這樣這些物件就可以不用彼此耦合。這個中介者常常起著中間橋梁的作用,使其他的物件可以利用中介者完成某些行為活動,因此它必須對所有的參與活動的物件瞭如指掌!1 當一組物件要進行溝通或者業務上的互動,但是其關係卻又很複雜混亂時...