- 一润樱、導語
- 二剩胁、怎么用
1.樣例背景
2.UML類圖
3.代碼示例- 三、優(yōu)缺點
- 四祥国、使用場景
1.概括描述
2.現存知名產品中的使用示例- 五昵观、相關設計模式
- 六、參考
一舌稀、導語
中介者模式(Mediator啊犬,又叫做調停者模式),用一個中介對象來封裝一系列的對象交互壁查。中介者使各對象不需要顯式地相互引用觉至,從而使其耦合松散,而且可以獨立的改變他們之間的交互睡腿。
二语御、怎么用
共有2個示例峻贮,代碼詳見訪問鏈接
下面以example2舉例說明
1. 樣例背景
以聯(lián)合國和各國家之間的關系舉例
中介者:聯(lián)合國
同事類:各國家
沒使用中介者模式時的關系圖
使用中介者模式時的關系圖
2. UML類圖
UnitedNations ------------------- 抽象中介者
SecurityCouncil ----------------- 實際中介者
Country ------------------------- 抽象同事類
Iraq ----------------------------- 實際同事類
USA ---------------------------- 實際同事類
example2 使用中介者模式后 UML類圖
3. 代碼示例
/**
* description: 聯(lián)合國機構 (抽象的中介者)
*/
public abstract class UnitedNations {
abstract void declare(Country colleague, String message);
}
/**
* description: 安理會 (具體的中介者類)
*/
public class SecurityCouncil extends UnitedNations {
@Override
void declare(Country colleague, String message) {
colleague.sendMessage(message);
}
}
/**
* description: 抽象的國家 (抽象的同事類)
*/
public abstract class Country {
protected UnitedNations mediator;
public Country(UnitedNations mediator) {
this.mediator = mediator;
}
abstract void declare(String message);
abstract void sendMessage(String message);
}
/**
* description: 伊拉克 (具體的同事類)
*/
public class Iraq extends Country {
public Iraq(UnitedNations mediator) {
super(mediator);
}
@Override
void declare(String message) {
mediator.declare(this,message);
}
@Override
void sendMessage(String message) {
System.out.println("伊拉克說: " + message);
}
}
/**
* description: 美國 (具體的同事類)
*/
public class USA extends Country {
public USA(UnitedNations mediator) {
super(mediator);
}
@Override
void declare(String message) {
mediator.declare(this,message);
}
@Override
void sendMessage(String message) {
System.out.println("USA說: " + message);
}
}
public class Test {
public static void main(String[] args) {
UnitedNations securityCouncil = new SecurityCouncil();
Country usa = new USA(securityCouncil);
Country iraq = new Iraq(securityCouncil);
usa.declare("不準研制核武器,否則老子收拾你");
iraq.declare("老子想干啥就干啥应闯,用你管");
}
}
執(zhí)行結果
USA說: 不準研制核武器纤控,否則老子收拾你
伊拉克說: 老子想干啥就干啥,用你管
三碉纺、優(yōu)缺點
缺點
1.中介者過多時會增加系統(tǒng)的復雜度優(yōu)點
1.將一對多轉化為一對一船万、降低程序復雜度
2.類之間解耦
四、使用場景
1. 概括描述
- 系統(tǒng)中對象之間存在復雜的引用關系骨田,產生的相互依賴關系結構混亂且難以理解
- 交互的公共行為耿导,如果需要改變行為則可以增加新的中介者類
2. 現存知名產品中的使用示例 todo
2.1 java.util.timer (jdk)
五、相關設計模式
1. 中介者模式和觀察者模式
這兩個有時候會結合使用态贤,有時候我們會使用觀察者模式來實現中介者模式中角色的通訊舱呻。