B8 中介者模式 Mediator

2022-07-22 11:09:23 字數 1299 閱讀 6384

用乙個中介物件來封裝一系列的物件互動,中介者使得各物件不需要顯示地相互引用,從而使其耦合鬆散,而且可以獨立的改變它們之間的互動.

減少了各物件之間的耦合,使得可以獨立的改變或復用各個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 當一組物件要進行溝通或者業務上的互動,但是其關係卻又很複雜混亂時...