福永外贸网站建设公司,焊工培训心得体会,广东手机网站制作电话,网站后台购买系列文章目录
设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式#xff0c;5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式#xff0c;每一种模式的概念、使用…系列文章目录
设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式每一种模式的概念、使用场景和优缺点。 设计模式之模板方法模式通俗易懂快速理解以及模板方法模式的使用场景 设计模式之-建造者模式通俗易懂理解以及建造者模式的使用场景和示列代码 设计模式之-代理模式快速掌握理解代理模式以及代理模式的使用场景 设计模式之-原型模式快速掌握原型模式通俗易懂的理解原型模式以及使用场景 设计模式之-中介者模式快速掌握中介者模式通俗易懂的讲解中介者模式以及它的使用场景 设计模式之-责任链模式快速掌握责任链模式通俗易懂的讲解责任链模式以及它的使用场景 设计模式之-装饰模式快速掌握装饰模式通俗易懂的讲解装饰模式以及它的使用场景 设计模式之-适配器模式快速掌握适配器模式通俗易懂的讲解适配器模式以及它的使用场景 文章目录 系列文章目录一、快速理解中介者模式二、使用场景三、示例代码 一、快速理解中介者模式
中介者模式是一种行为型设计模式它允许多个对象之间通过一个中介者对象进行通信和协作。中介者模式将对象之间的交互行为集中在一个中介者对象中降低了对象之间的耦合度使其更易于理解和维护。
在现实生活中中介者模式的例子可以是机场的塔台。塔台中介者对象负责协调不同飞机对象之间的起飞和降落飞机之间无需直接相互通信而是通过塔台进行交流。
二、使用场景
使用中介者模式的主要场景包括
当一组对象之间的通信产生复杂的依赖关系时可以使用中介者模式将其简化。中介者对象负责管理对象之间的通信避免了对象之间的直接耦合。当一组对象之间的交互行为需要进行集中控制时可以使用中介者模式。中介者对象可以维护和管理对象之间的关系并根据需要调整对象之间的交互行为。
三、示例代码
下面是一个通俗易懂的中介者模式示例代码以聊天室为场景
// 抽象中介者聊天室
interface ChatRoom {void sendMessage(String message, User user);
}// 具体中介者具体聊天室
class ConcreteChatRoom implements ChatRoom {Overridepublic void sendMessage(String message, User user) {System.out.println(user.getName() 发送消息 message);}
}// 抽象同事类用户
abstract class User {protected String name;protected ChatRoom chatRoom;public User(String name, ChatRoom chatRoom) {this.name name;this.chatRoom chatRoom;}public String getName() {return name;}public abstract void sendMessage(String message);
}// 具体同事类普通用户
class OrdinaryUser extends User {public OrdinaryUser(String name, ChatRoom chatRoom) {super(name, chatRoom);}Overridepublic void sendMessage(String message) {chatRoom.sendMessage(message, this);}
}// 具体同事类VIP用户
class VipUser extends User {public VipUser(String name, ChatRoom chatRoom) {super(name, chatRoom);}Overridepublic void sendMessage(String message) {chatRoom.sendMessage(message, this);}
}// 客户端代码
public class Main {public static void main(String[] args) {ChatRoom chatRoom new ConcreteChatRoom();User user1 new OrdinaryUser(Tom, chatRoom);User user2 new OrdinaryUser(Jerry, chatRoom);User user3 new VipUser(Alice, chatRoom);user1.sendMessage(Hello everyone!);user2.sendMessage(Hi Tom!);user3.sendMessage(Nice to meet you all.);}
}在上面的示例中ChatRoom是抽象中介者接口定义了用户发送消息的方法。ConcreteChatRoom是具体中介者类实现了抽象中介者接口并在sendMessage方法中处理用户发送的消息。
User是抽象同事类定义了用户的名称和中介者对象。OrdinaryUser和VipUser是具体同事类分别实现了抽象同事类的发送消息方法并在其中调用中介者对象的方法。
在客户端代码中首先创建了一个具体中介者对象chatRoom。然后创建了多个具体同事对象包括普通用户和VIP用户。最后每个用户通过调用发送消息方法向聊天室发送消息。
通过使用中介者模式可以将对象之间的通信行为集中在一个中介者对象中减少了对象之间的直接依赖和耦合。中介者模式提供了一种简化复杂交互的方式使对象之间的通信更加简单和可控。