中结者模式又叫作调解者模式或调停者模式。用一个中介对象封装一系列对象交互,中介者使各对象不需要显示地相互作用,
从而使其耦合松散,而且可以独立得改变它们之间得交互,属于行为型设计模式。
由上图可以看到,中介者模式主要包含4个角色。
假设我们需要构建一个聊天室系统,用户可以向聊天室发送消息,聊天室会向所有用户显示消息。实际上就是用户发消息
与聊天室显示的通信过程,不过用户无法直接将信息发给聊天室,而需要将信息先发到服务器上,然后服务器再将该消息发给
聊天室进行显示,具体代码如下。首先创建User类。
public class User { private String name; private ChatRoom chatRoom; public User(String name, ChatRoom chatRoom) { this.name = name; this.chatRoom = chatRoom; } public String getName() { return name; } public void sendMessage(String msg){ this.chatRoom.showMsg(this,msg); } }
然后创建ChatRoom类。
public class ChatRoom { public void showMsg(User user,String msg){ System.out.println("[" + user.getName() + "] : " + msg); } }
最后编写测试代码。
public class Test { public static void main(String[] args) { ChatRoom chatRoom = new ChatRoom(); User tom = new User("Tom",chatRoom); User jerry = new User("Jerry",chatRoom); tom.sendMessage("Hi! I am Tom."); jerry.sendMessage("Hello! My name is Jerry."); } }
中介者模式将原本多个对象直接的相互依赖变成了中介者和多个同事类的依赖关系。
当同事类越多时,中介者就会臃肿,变得复杂且难以维护。
原文:https://www.cnblogs.com/liu-yi/p/14008533.html