1.意圖 用一個中介對象來封裝一系列的對象交互。中介者使各個對象不需要顯示地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。 2.動機 通過將集體行為封裝在一個單獨的中介者對象中,中介者負責控制和協調一組對象間的交互。中介者充當一個中介以使組中的對象不再相互顯示引用。這些對象只知道中介 ...
1.意圖
用一個中介對象來封裝一系列的對象交互。中介者使各個對象不需要顯示地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。
2.動機
通過將集體行為封裝在一個單獨的中介者對象中,中介者負責控制和協調一組對象間的交互。中介者充當一個中介以使組中的對象不再相互顯示引用。這些對象只知道中介者,從而減少了相互連接的數目。
3.適用性
- 一組對象定義良好,但是以複雜的方式進行通信。產生的相互依賴關係結構混亂且難以理解。
- 一個對象引用其它很多對象並且直接與這些對象通信,導致難以復用該對象。
- 想定製一個分佈在多個類中的行為,而又不想生成太多的子類。
4.結構
5.效果
- 減少了子類的生成,Mediator將原本分佈於多個對象間的行為集中在一起。改變這些行為只需生成Mediator的子類即可。這樣各個Colleague類可被重用。
- 將個Colleague解耦, Mediator有利於各Colleague間的松耦合,可以獨立的改變和重用各Mediator類和Colleague類。
- 簡化了對象協議,用Mediator和各Colleague間的一對多的交互來替代多對多的交互。一對多的關係更易於理解,維護和擴展。
- 它對對對象如何協作進行了抽象,將中接者作為一個獨立的概念並將其封裝在一個對象中,使你將註意力從對象各自本身的行為轉移到它們之間的交互上來。這有助於弄清楚一個系統中的對象是如何交互的。
- 它使控制集中化,中介者模式將交互的複雜性變為中介者的複雜性。因為中介者封裝了協議,它可能比任何一個Colleague都複雜。這可能使中介者自身成為一個難於維護的龐然大物。