Java設計模式——行爲型模式之中介者模式

一、前言

      中介者模式的概念就像我們生活中的中介一樣,它的職責就是處理不同類與對象之間的通信,降低了 它們通信的複雜度,這種設計模式支持鬆耦合,且代碼易於維護。

二、中介者模式

     概述:用一箇中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。

中介者模式主要解決對象與對象之間存在大量的關聯關係,這樣勢必會導致系統的結構變得很複雜,同時若一個對象發生改變,我們也需要跟蹤與之相關聯的對象,同時做出相應的處理。

使用場景:

1.一組對象以定義良好但是複雜的方式進行通信。產生的相互依賴關係結構混亂且難以理解。

2.一個對象引用其他很多對象並且直接與這些對象通信,導致難以複用該對象。

3.想定製一個分佈在多個類中的行爲,而又不想生成太多的子類。

優點:

1、降低了類的複雜度,將一對多轉化成了一對一。 2、各個類之間的解耦。 3、符合迪米特原則。

缺點:中介者會龐大,變得複雜難以維護。

三、代碼展示

3.1 定義一箇中介者的接口,用來與其它對象進行通信

public abstract class Mediator {

    public abstract void notice(String content);
}

 3.2  實現類

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();
        }
    }
}
3.3 通信的類

public class ColleagueA extends Colleague {

    
    public void action() {
        System.out.println("普通員工努力工作");
    }
}
public class ColleagueB extends Colleague {

    public void action() {
        System.out.println("前臺注意了!");
    }
}

3.4 結果

public class Test {

    public static void main(String[] args) {
        Mediator med = new ConcreteMediator();
        //老闆來了
        med.notice("boss");
        
        //客戶來了
        med.notice("client");
    }
}
普通員工努力工作
前臺注意了!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章