設計模式的3個分類:建立型模式、結構型模式、行爲型模式java
中介模式定義:設計模式
在軟件工程領域,中介者模式定義了一箇中介者對象,該對象封裝了系統中對象間的交互方式。因爲它能夠在運行時改變程序的行爲,這種模式是一種行爲型模式。ide
中介模式圖示:this
代碼實現:.net
/** * 中介接口 */ public interface IChatRoom { void sendMessage(String msg, String userId); void addUser(User user); } /** * 抽象用戶類 */ public abstract class User { private IChatRoom mediator; private String id; private String name; public User(IChatRoom mediator, String id, String name) { this.mediator = mediator; this.id = id; this.name = name; } public abstract void send(String msg, String userId); public abstract void receive(String msg); public IChatRoom getMediator() { return mediator; } public String getId() { return id; } public String getName() { return name; } } /** * 具體的中介類 */ public class ChatRoom implements IChatRoom { private Map<String, User> usersMap = new HashMap<>(); @Override public void sendMessage(String msg, String userId) { User u = usersMap.get(userId); u.receive(msg); } @Override public void addUser(User user) { usersMap.put(user.getId(), user); } } /** * 具體用戶類 */ public class ChatUser extends User{ public ChatUser(IChatRoom mediator, String id, String name) { super(mediator, id, name); } @Override public void send(String msg, String userId) { System.out.println(this.getName() + " Sending Message: " + msg); this.getMediator().sendMessage(msg, userId);//經過中介對象發送信息 } @Override public void receive(String msg) { System.out.println(this.getName() + " Received Message: " + msg); } } /** * Test */ public class MediatorPatternDemo { public static void main(String[] args) { IChatRoom chatRoom = new ChatRoom(); User user1 = new ChatUser(chatRoom, "1", "Kobe"); User user2 = new ChatUser(chatRoom, "2", "James"); User user3 = new ChatUser(chatRoom, "3", "077"); User user4 = new ChatUser(chatRoom, "4", "YueG7"); chatRoom.addUser(user1); chatRoom.addUser(user2); chatRoom.addUser(user3); chatRoom.addUser(user4); user3.send("Hello YueG7", "4"); System.out.println(); user4.send("別來無恙", "3"); } } //output 077 Sending Message: Hello YueG7 YueG7 Received Message: Hello YueG7 YueG7 Sending Message: 別來無恙 077 Received Message: 別來無恙
參考:設計
Mediator Design Pattern: https://howtodoinjava.com/design-patterns/behavioral/mediator-pattern/
code
本文同步分享在 博客「黑冰臺」(CNBlog)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。對象