网站风格分析怎么写,大连个人网站开发制作,网站开发团队如何接活,wordpress编辑网站概述
中介者模式#xff08;Mediator Pattern#xff09;是一种行为型设计模式#xff0c;它通过封装一系列对象之间的交互方式#xff0c;使这些对象能够互相通信而不需要直接相互引用。中介者模式通过集中控制对象的交互#xff0c;使得对象之间的耦合度降低#xff0…概述
中介者模式Mediator Pattern是一种行为型设计模式它通过封装一系列对象之间的交互方式使这些对象能够互相通信而不需要直接相互引用。中介者模式通过集中控制对象的交互使得对象之间的耦合度降低同时也提高了系统的可维护性和可扩展性。
主要角色
Mediator中介者定义了各个同事对象之间通信的接口通常包含一个或多个事件方法用于接收和发送消息。ConcreteMediator具体中介者实现了中介者接口负责协调各个同事对象之间的通信。具体中介者通常保存了各个同事对象之间的引用并根据具体的业务逻辑进行协调。Colleague同事定义了与其他同事对象通信的接口。ConcreteColleague具体同事实现了同事接口负责与其他同事对象进行通信。
优点
降低了对象之间的耦合性中介者模式将对象之间的通信逻辑集中到一个中介者对象中从而减少了对象之间的直接耦合使得对象之间的关系更加灵活和可扩展。便于维护和扩展由于中介者对象封装了对象之间的交互逻辑当系统需要新增或修改对象之间的交互行为时只需要修改中介者对象即可而不需要修改每个对象之间的引用关系。提供了集中控制中介者对象作为集中控制者可以更好地管理和调控对象之间的交互从而更好地实现业务逻辑的复杂性。
缺点
中介者对象过于庞大由于中介者对象需要处理多个对象之间的交互可能会导致中介者对象变得庞大和复杂难以维护。增加了系统复杂性中介者模式引入了一个额外的中介者对象使得系统中多了一个参与交互的角色增加了系统的复杂性。
使用场景
系统中存在多个对象之间的复杂交互并且对象之间的关系难以维护和理解。希望通过一个中心化的对象来集中管理和调控对象之间的交互逻辑。当一个对象的行为依赖于其他多个对象时可以使用中介者模式将对象之间的交互逻辑转移到中介者对象中。
示例
假设有一个聊天室系统其中包含多个用户用户之间可以发送消息进行交流。用户之间的通信交互较为复杂每个用户都需要了解其他用户的情况。这时可以使用中介者模式来解决。
首先定义中介者接口ChatMediator并在接口中定义发送消息的方法
public interface ChatMediator {void sendMessage(String message, User user);
}
然后实现具体的中介者类ChatRoom负责协调用户之间的通信
import java.util.ArrayList;
import java.util.List;public class ChatRoom implements ChatMediator {private ListUser users;public ChatRoom() {this.users new ArrayList();}Overridepublic void sendMessage(String message, User user) {for (User u : users) {if (u ! user) {u.receiveMessage(message);}}}public void addUser(User user) {users.add(user);}
}
接下来定义用户接口User并在接口中定义发送和接收消息的方法
public interface User {void sendMessage(String message);void receiveMessage(String message);
}
然后实现具体的用户类ChatUser负责实现用户接口并在实现类中保存中介者的引用
public class ChatUser implements User {private ChatMediator chatMediator;private String name;public ChatUser(ChatMediator chatMediator, String name) {this.chatMediator chatMediator;this.name name;}Overridepublic void sendMessage(String message) {chatMediator.sendMessage(message, this);}Overridepublic void receiveMessage(String message) {System.out.println(name received message: message);}
}
最后我们可以创建聊天室对象和多个用户对象并让用户之间通过聊天室发送和接收消息
public class MediatorExample {public static void main(String[] args) {// 创建聊天室对象ChatRoom chatRoom new ChatRoom();// 创建用户对象User user1 new ChatUser(chatRoom, User1);User user2 new ChatUser(chatRoom, User2);User user3 new ChatUser(chatRoom, User3);// 添加用户到聊天室chatRoom.addUser(user1);chatRoom.addUser(user2);chatRoom.addUser(user3);// 用户发送消息user1.sendMessage(Hello, everyone!);user2.sendMessage(Hi, User1!);user3.sendMessage(Nice to meet you all!);}
}
运行结果 User2 received message: Hello, everyone! User3 received message: Hello, everyone! User1 received message: Hi, User1! User3 received message: Hi, User1! User1 received message: Nice to meet you all! User2 received message: Nice to meet you all!