意圖:用一箇中介對象來封裝一系列的對象交互,中介者使各對象不須要顯式地相互引用,從而使其耦合鬆散,並且能夠獨立地改變它們之間的交互。html
主要解決:對象與對象之間存在大量的關聯關係,這樣勢必會致使系統的結構變得很複雜,同時若一個對象發生改變,咱們也須要跟蹤與之相關聯的對象,同時作出相應的處理。設計模式
什麼時候使用:多個類相互耦合,造成了網狀結構。this
如何解決:將上述網狀結構分離爲星型結構。設計
咱們經過聊天室實例來演示中介者模式。實例中,多個用戶能夠向聊天室發送消息,聊天室向全部的用戶顯示消息。咱們將建立兩個類 ChatRoom 和 User。User 對象使用 ChatRoom 方法來分享他們的消息。3d
MediatorPatternDemo,咱們的演示類使用 User 對象來顯示他們之間的通訊。code
public class ChatRoom { public static void showMessage(User user, String message){ System.out.println(new Date().toString() + " [" + user.getName() +"] : " + message); } }
public class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public User(String name){ this.name = name; } public void sendMessage(String message){ ChatRoom.showMessage(this,message); } }
public class MediatorPatternDemo { public static void main(String[] args) { User robert = new User("Robert"); User john = new User("John"); robert.sendMessage("Hi! John!"); john.sendMessage("Hello! Robert!"); } }
Thu Jan 31 16:05:46 IST 2013 [Robert] : Hi! John! Thu Jan 31 16:05:46 IST 2013 [John] : Hello! Robert!
1.中介者模式htm