当前位置: 首页 > 网络知识

C++ 设计模式之中介者模式

时间:2026-01-29 09:37:26

设计模式之中介者模式


中介者模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。该模式很好理解,其UML图如下:

Mediator中每个交互者的引用,在Mediator内部封装了各种类之间的交互。至于那个类和那个类交合则有具体的需求来决定。示例代码如下:

1 // MediatorModel.h文件 2 #pragma once 3 #include <string> 4 #include <iostream> 5 6 class Colleague; 7 8 class Mediator 9 ; 13 14 class Colleague 15 23 virtual void send(std::string msg) = 0; 24 virtual void notify(std::string msg) = 0; 25 }; 26 27 class ConcreteColleague_0 : public Colleague 28 31 void send(std::string msg) 32 35 void notify(std::string msg) 36 39 }; 40 41 class ConcreteColleague_1 : public Colleague 42 45 void send(std::string msg) 46 49 void notify(std::string msg) 50 53 }; 54 55 class ConcreteMediator : public Mediator 56 67 void send(std::string msg, Colleague * p) 68 77 };

测试代码如下:

1 #include <iostream> 2 #include "MediatorModel.h" 3 4 int main() 5

测试结果如下图:

  Mediator的出现减少了各个Colleague的耦合,使得可以读来地改变和复用各个Colleague类和Mediator。由于把对象如何协作进行了抽象,将中介作为一个独立的概念并将其封装在一个对象中,这样关注的对象就从对象各自本身的行为转移到它们之间的交互上来,也就是站在一个更宏观的角度去看待系统。等于说使把交互的复杂性变为了中介的复杂性。



上一篇:C++ 计时方法 std::chrono
下一篇:C/C++ GetWindowRect()函数
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素