当前位置: 首页 > news >正文

设计模式之-中介者模式,快速掌握中介者模式,通俗易懂的讲解中介者模式以及它的使用场景

系列文章目录

设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列
设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点
设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用场景和优缺点。
设计模式之模板方法模式,通俗易懂快速理解,以及模板方法模式的使用场景
设计模式之-建造者模式通俗易懂理解,以及建造者模式的使用场景和示列代码
设计模式之-代理模式,快速掌握理解代理模式,以及代理模式的使用场景
设计模式之-原型模式,快速掌握原型模式,通俗易懂的理解原型模式以及使用场景
设计模式之-中介者模式,快速掌握中介者模式,通俗易懂的讲解中介者模式以及它的使用场景
设计模式之-责任链模式,快速掌握责任链模式,通俗易懂的讲解责任链模式以及它的使用场景
设计模式之-装饰模式,快速掌握装饰模式,通俗易懂的讲解装饰模式以及它的使用场景
设计模式之-适配器模式,快速掌握适配器模式,通俗易懂的讲解适配器模式以及它的使用场景


文章目录

  • 系列文章目录
  • 一、快速理解中介者模式
  • 二、使用场景
  • 三、示例代码


一、快速理解中介者模式

中介者模式是一种行为型设计模式,它允许多个对象之间通过一个中介者对象进行通信和协作。中介者模式将对象之间的交互行为集中在一个中介者对象中,降低了对象之间的耦合度,使其更易于理解和维护。

在现实生活中,中介者模式的例子可以是机场的塔台。塔台(中介者对象)负责协调不同飞机(对象)之间的起飞和降落,飞机之间无需直接相互通信,而是通过塔台进行交流。

二、使用场景

使用中介者模式的主要场景包括:

  1. 当一组对象之间的通信产生复杂的依赖关系时,可以使用中介者模式将其简化。中介者对象负责管理对象之间的通信,避免了对象之间的直接耦合。
  2. 当一组对象之间的交互行为需要进行集中控制时,可以使用中介者模式。中介者对象可以维护和管理对象之间的关系,并根据需要调整对象之间的交互行为。

三、示例代码

下面是一个通俗易懂的中介者模式示例代码,以聊天室为场景:

// 抽象中介者:聊天室
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用户。最后,每个用户通过调用发送消息方法向聊天室发送消息。

通过使用中介者模式,可以将对象之间的通信行为集中在一个中介者对象中,减少了对象之间的直接依赖和耦合。中介者模式提供了一种简化复杂交互的方式,使对象之间的通信更加简单和可控。

http://www.lryc.cn/news/267265.html

相关文章:

  • 12.25
  • MySQL5.7的几种安装方式总结(排错踩坑呕心沥血的经历)
  • zookeeper基本使用
  • 【华为机试】2023年真题B卷(python)-分月饼
  • EtherCAT主站SOEM -- 11 -- EtherCAT从站 XML 文件解析
  • YOLOv5算法改进(23)— 更换主干网络GhostNet + 添加CA注意力机制 + 引入GhostConv
  • centos系统部署rancher1.6版本并部署服务
  • Matlab实时读取串口数据并实时画图方法
  • 智能优化算法应用:基于向量加权平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • SpringBoot - Maven 打包合并一个胖 JAR 以及主项目 JAR 依赖 JAR 分离打包解决方案
  • react 18 Hooks扩展函数式组件的状态管理
  • 智能优化算法应用:基于浣熊算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • c++ qt QtWidgetsApplication 项目 使用外部ui
  • 使用React 18、Echarts和MUI实现温度计
  • 使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的业务编码规则管理
  • Android 13 - Media框架(26)- OMXNodeInstance(三)
  • 力扣题目学习笔记(OC + Swift)21. 合并两个有序链表
  • C# WPF上位机开发(windows pad上的应用)
  • Word使用技巧【开题报告】
  • 电子学会C/C++编程等级考试2022年06月(七级)真题解析
  • git中的smart checkout和force checkout
  • vue3整合Element-Plus,极速上手。
  • 学习Vue2.x
  • 新手如何快速熟悉代码,写出东西(持续更新)
  • 11-网络安全框架及模型-软件安全能力成熟度模型(SSCMM)
  • Linux操作系统基础知识点
  • python 通过opencv及face_recognition识别人脸
  • Android开发中常见的Hook技术有哪些?
  • 【linux c多线程】线程的创建,线程信息的获取,获取线程返回值
  • MFC或QT中,自绘控件的目的和实现步骤