系列文章目录
设计模式之-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用户。最后,每个用户通过调用发送消息方法向聊天室发送消息。
通过使用中介者模式,可以将对象之间的通信行为集中在一个中介者对象中,减少了对象之间的直接依赖和耦合。中介者模式提供了一种简化复杂交互的方式,使对象之间的通信更加简单和可控。