定義一個封裝一組對象如何交互的對象
經過使對象明確地相互引用來促進鬆散耦合,並容許獨立地改變它們的交互
類型:行爲型設計模式
系統中對象之間存在複雜的引用關係,產生的相互依賴關係結構混亂且難以理解
交互的公共行爲,若是須要改變行爲則能夠增長新的中介者類測試
將一對多轉化成了一對1、下降程序複雜度
類之間解耦this
中介者過多,致使系統複雜設計
中介者模式和觀察者模式:這二者常常結合使用code
模擬場景:用戶在聊天室內聊天對象
用戶類:blog
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){ StudyGroup.showMessage(this, message); } }
聊天室類:get
public class StudyGroup { public static void showMessage(User user, String message){ // 此處可結合觀察者模式進行通知 System.out.println(new Date().toString() + "[" + user.getName() + "]" + message); } }
測試類:源碼
public class Test { public static void main(String[] args) { User tom = new User("tom"); User jery = new User("jery"); tom.sendMessage("hi"); jery.sendMessage("hello"); } }
輸出:
Mon May 25 20:31:04 CST 2020[tom]hi
Mon May 25 20:31:04 CST 2020[jery]helloclass
一、JDK中的Timer