设计模式的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源创计划”,欢迎正在阅读的你也加入,一块儿分享。对象