中介者模式主要解決多個對象和類之間的通訊複雜度,主要經過一箇中介類接受全部消息,而後再進行轉發。html
這樣能夠下降多個對象和類之間的通訊複雜度,由原來的網狀接口轉變爲星型結構。java
網狀結構 星型結構測試
圖片來自: https://www.runoob.com/design-pattern/mediator-pattern.html zml1234this
想象一下,若是上圖中六個對象是聊天室中六我的,若是不採用中介模式,那麼對象1要想其餘全部對象發送消息,對象而也是如此。spa
這樣對象多了後,通訊的過程很複雜,並且結構混亂不利於後期維護。code
咱們在這裏使用一箇中介,全部對象都將消息發送給中介者,而後由中介者進行轉發。htm
這樣了不只結構清晰,並且後期維護也方便。對象
接下來看一個例子blog
中介類接口
import java.util.Date; public class ChatRoom { public static void sendMessage(User user, String message) { System.out.println(new Date().toString() + " [" + user.getName() +"] : " + message); } }
聊天室用戶
User
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) { ChatRoom.sendMessage(this,message); } }
測試
public class Main { public static void main(String[] args) { User hcf = new User("hcf"); User zrx = new User("zrx"); hcf.sendMessage("你好!zrx"); zrx.sendMessage("你好,hcf"); } }
運行結果:
Tue Jun 11 11:16:28 CST 2019 [hcf] : 你好!zrx Tue Jun 11 11:16:28 CST 2019 [zrx] : 你好,hcf
參考資料: