設計模式之中介者模式

定義

定義一個封裝一組對象如何交互的對象

通過使對象明確地相互引用來促進鬆散耦合,並允許獨立地改變它們的交互。

類型

行爲型

適用場景

①、系統中對象之間存在複雜的引用關係,產生的相互依賴關係結構混亂且難以理解。
②、交互的公共行爲,如果需要改變行爲則可以增加新的中介者類。

優缺點

優點:
①、將一對多轉化成了一對一,降低程序複雜度。
②、類之間解耦。

缺點:
①、中介者過多,導致系統複雜。

代碼實現

案例:由於今年這個疫情,很多互聯網公司選擇網上辦公,我司也是這樣。部門經理在微信上建立了部門羣,給每個開發者分配了開發任務,或者做一些休假通知。
首先編寫一個用戶類

public class User {

    private String name;

    public User(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void sendMessage(String message) {
        CompanyGroup.showMessage(this, message);
    }
}

這裏就提供了一個name屬性,定義了一個發送消息的方法,由CompanyGroup這個類的showMessage()方法作爲中介者來發送。
定義羣聊天室

public class CompanyGroup {

    public static void showMessage(User user, String message) {
        System.out.println(new Date().toString() + " [" + user.getName() + "]: " + message);
    }
}

這個就是一箇中介者的類,所有用戶發的消息,都經過這個類的showMessage()方法。後期也可以增加敏感詞校驗的邏輯和其他邏輯。
編寫測試類

public class MainTest {

    public static void main(String[] args) {
        User manager = new User("部門經理");
        User staff = new User("程序員");

        manager.sendMessage("你今天的任務就是 完成 設計模式的學習");
        staff.sendMessage("好的,老大,收到!");
    }
}

輸出結果:

C:\android\java\jdk1.8\bin\java.exe 
Mon Mar 09 13:09:20 CST 2020 [部門經理]: 你今天的任務就是 完成 設計模式的學習
Mon Mar 09 13:09:20 CST 2020 [程序員]: 好的,老大,收到!

相關源碼

1. Jdk中的Timer計時器

參考鏈接
https://coding.imooc.com/learn/list/270.html

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