概述:
用一個中介對象來封裝一系列的對象互動。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。
適用性;
1.一組對象以定義良好但是複雜的方式進行通訊。產生的相互依賴關係結構混亂且難以理解。 2.一個對象引用其他很多個物件並且直接與這些對象通訊,導致難以複用該對象。 3.想定製一個分布在多個類中的行為,而又不想產生太多的子類。
參與者:
1.Mediator 中介者定義一個介面用於與各同事(Colleague)對象通訊。 2.ConcreteMediator 具體中介者通過協調各同事對象實現協作行為。 瞭解並維護它的各個同事。 3.Colleagueclass 每一個同事類都知道它的中介者對象。 每一個同事對象在需與其他的同事通訊的時候,與它的中介者通訊
類圖:
例子:
Mediator public abstract class Mediator { public abstract void notice(String content);}ConcreteMediator public class ConcreteMediator extends Mediator { private ColleagueA ca; private ColleagueB cb; public ConcreteMediator() { ca = new ColleagueA(); cb = new ColleagueB(); } public void notice(String content) { if (content.equals("boss")) { //老闆來了, 通知員工A ca.action(); } if (content.equals("client")) { //客戶來了, 通知前台B cb.action(); } }}Colleagueclass public class ColleagueA extends Colleague { public void action() { System.out.println("普通員工努力工作"); }}public class ColleagueB extends Colleague { public void action() { System.out.println("前台注意了!"); }}Test public class Test { public static void main(String[] args) { Mediator med = new ConcreteMediator(); //老闆來了 med.notice("boss"); //客戶來了 med.notice("client"); }}result 普通員工努力工作前台注意了!
轉載自java設計模式(瘋狂java聯盟)