定義
中介者模式(Mediator Pattern)是用來(lái)降低多個(gè)對(duì)象和類(lèi)之間的通信復(fù)雜性滴某。這種模式提供了一個(gè)中介類(lèi)狈孔,該類(lèi)通常處理不同類(lèi)之間的通信珠插,并支持松耦合食店,使代碼易于維護(hù)渣淤。中介者模式屬于行為型模式。
實(shí)現(xiàn)
我們通過(guò)聊天室實(shí)例來(lái)演示中介者模式吉嫩。實(shí)例中价认,多個(gè)用戶可以向聊天室發(fā)送消息,聊天室向所有的用戶顯示消息自娩。我們將創(chuàng)建兩個(gè)類(lèi) ChatRoom 和 User用踩。User 對(duì)象使用 ChatRoom 方法來(lái)分享他們的消息。
MediatorPatternDemo忙迁,我們的演示類(lèi)使用 User 對(duì)象來(lái)顯示他們之間的通信脐彩。
中介者模式的 UML 圖
步驟 1
創(chuàng)建中介類(lèi)。
ChatRoom.java
import java.util.Date;
public class ChatRoom {
public static void showMessage(User user, String message){
System.out.println(new Date().toString()
+ " [" + user.getName() +"] : " + message);
}
}
步驟 2
創(chuàng)建 user 類(lèi)姊扔。
User.java
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);
}
}
步驟 3
使用 User 對(duì)象來(lái)顯示他們之間的通信惠奸。
MediatorPatternDemo.java
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!");
}
}
步驟 4
驗(yàn)證輸出。
Thu Jan 31 16:05:46 IST 2013 [Robert] : Hi! John!
Thu Jan 31 16:05:46 IST 2013 [John] : Hello! Robert!