恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

设计模式行为型——中介者模式

  • 首页
  • 资讯中心
  • /
  • 设计模式行为型——中介者模式

相关资讯

League Akari 使用指南:英雄联盟自动选将与客户端流程自动化 2026/8/22 12:07:53
Windows 11黑屏死机全攻略:从驱动更新到硬件诊断的完整解决方案 2026/8/22 12:02:53
xiaozhi-esp32:从零搭好AI语音助手 2026/8/22 12:02:53

最新资讯

ViRectify: A Challenging Benchmark for Video Reasoning Correction with Multimodal Large Language ...
LLM-EDT: Large Language Model Enhanced Cross-domain Sequential Recommendation with Dual-phase Tra...
MobaXterm Keygen 快速上手:3 步生成专业版许可证文件
Tutorials 项目完全指南:一个开源仓库学透 HTML、Go、Docker 与智能家居 4 大技术栈
通达信缠论插件 ChanlunX:笔、线段、中枢 3 分钟自动画好
DatalinkX 数据同步快速上手指南:如何 10 分钟跑通跨库数据流转

今日推荐

markdown-it-vue 踩坑排障:从安装到渲染的 6 个高频问题快速讲清
多尺度智能体控制:从宏观密度场到微观决策的架构与实践
CUBE标准:统一AI智能体评测的度量衡与架构解析

本周热门

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

设计模式行为型——中介者模式

发布时间:2026/8/22 12:07:53
设计模式行为型——中介者模式 目录中介者模式的定义中介者模式的实现中介者模式角色中介者模式类图中介者模式代码实现中介者模式的特点优点缺点使用场景注意事项实际应用中介者模式的定义中介者模式Mediator Pattern属于行为型模式是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类该类通常处理不同类之间的通信并支持松耦合使代码易于维护。用一个中介者对象来封装一系列的对象交互中介者使各对象不需要显示地相互引用且可以独立地改变它们之间的交互。中介者模式又叫调停者模式是一种对象行为型模式。中介者模式的实现中介者模式角色抽象中介者角色Mediator抽象中介者角色定义统一的接口以及一个或者多个事件方法用于各同事角色之间的通信。具体中介者角色ConcreteMediator实现了抽象中介者所声明的事件方法协调各同事类之间的行为持有所有同事类对象的引用。抽象同事角色Colleague定义了抽象同事类持有抽象中介者对象的引用。具体同事角色ConcreteColleague继承抽象同事类实现自己业务通过中介者跟其他同事类进行通信都需要认识中介者。中介者模式类图中介者模式代码实现抽象中介者角色package com.common.demo.pattern.mediator; /** * author Evan Walker 昂焱数据: https://www.ayshuju.com * version 1.0 * desc 具体中介角色 具体中介者 * date 2023/08/04 09:27:57 */ public class ConcreteMediator extends Mediator{ Override public void operation(Colleague colleague) { if(colleague instanceof ConcreteColleagueA) { colleagues.get(0).update(); }else if(colleague instanceof ConcreteColleagueB) { colleagues.get(1).update(); } } }具体中介者角色package com.common.demo.pattern.mediator; /** * author Evan Walker 昂焱数据: https://www.ayshuju.com * version 1.0 * desc 具体中介角色 具体中介者 * date 2023/08/04 09:27:57 */ public class ConcreteMediator extends Mediator{ Override public void operation(Colleague colleague) { if(colleague instanceof ConcreteColleagueA) { colleagues.get(0).update(); }else if(colleague instanceof ConcreteColleagueB) { colleagues.get(1).update(); } } }抽象同事角色package com.common.demo.pattern.mediator; /** * author Evan Walker 昂焱数据: https://www.ayshuju.com * version 1.0 * desc 抽象同事角色 抽象同事类 * date 2023/08/04 09:21:50 */ public abstract class Colleague { /** * 抽象中介者引用 */ protected Mediator mediator; public Colleague(Mediator mediator) { this.mediator mediator; } /** * 数据更新方法 */ public abstract void update(); /** * 数据更改方法 */ public abstract void changed(); }具体同事角色package com.common.demo.pattern.mediator; /** * author Evan Walker 昂焱数据: https://www.ayshuju.com * version 1.0 * desc 具体同事角色 具体同事小A * date 2023/08/04 09:24:46 */ public class ConcreteColleagueA extends Colleague{ public ConcreteColleagueA(Mediator mediator) { super(mediator); } Override public void update() { System.out.println(更新同事小A); } Override public void changed() { System.out.println(同事小A数据更改); mediator.operation(this); } } package com.common.demo.pattern.mediator; /** * author Evan Walker 昂焱数据: https://www.ayshuju.com * version 1.0 * desc 具体同事角色 具体同事小B * date 2023/08/04 09:24:46 */ public class ConcreteColleagueB extends Colleague{ public ConcreteColleagueB(Mediator mediator) { super(mediator); } Override public void update() { System.out.println(更新同事小B); } Override public void changed() { System.out.println(同事小B数据更改); mediator.operation(this); } }测试代码package com.common.demo.pattern.mediator; /** * author Evan Walker 昂焱数据: https://www.ayshuju.com * version 1.0 * desc 具体中介角色 具体中介者 * date 2023/08/04 09:27:57 */ public class ConcreteMediator extends Mediator{ Override public void operation(Colleague colleague) { if(colleague instanceof ConcreteColleagueA) { colleagues.get(0).update(); }else if(colleague instanceof ConcreteColleagueB) { colleagues.get(1).update(); } } }测试截图中介者模式的特点优点解耦对象之间的交互中介者模式将对象间的交互逻辑封装到中介者对象中使得各个对象之间的关系变得松耦合减少了对象之间的直接依赖。集中控制交互逻辑中介者模式通过集中控制对象间的交互逻辑使得代码更加清晰可维护易于扩展和修改。简化对象间的通信中介者模式将对象间的通信封装到中介者对象中对象只需要关注自身的业务逻辑无需了解其它对象的具体实现细节。缺点中介者对象过于复杂随着系统的复杂性增加中介者对象可能会变得庞大复杂维护和理解起来相对困难。增加了系统的单一点故障中介者对象负责协调对象之间的交互一旦中介者对象出现问题可能会影响系统的稳定性。使用场景多个对象之间存在复杂的交互关系当对象之间存在复杂的交互逻辑并且彼此之间的依赖关系较高时可以考虑使用中介者模式。需要集中控制对象间交互逻辑的情况当需要集中管理和控制多个对象的交互逻辑时可以使用中介者模式简化系统的设计。注意事项中介者模式需要注意中介者对象的设计和组织方式以及与其他对象的交互关系避免中介者对象过于庞大和复杂。不要滥用中介者模式只有在对象间的交互逻辑较为复杂、耦合度较高时才考虑使用中介者模式。实际应用聊天室聊天室中的用户可以通过中介者对象发送消息和接收消息中介者负责将消息传递给其他用户。MVC框架在MVC框架中控制器作为中介者对象接收用户的请求并协调模型和视图之间的交互。航空管制系统航空管制系统中的空中交通管制中心可以看作是中介者负责协调各个飞机的航行和地面设施之间的交互。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号