行爲型模式-Mediator ( 中介者模式 )

摘自《Java設計模式(瘋狂JAVA聯盟版)》


中介者模式
 概述
    用一箇中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。
 適用性
    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
普通員工努力工作
前臺注意了!

發佈了17 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章