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

中介者模式(C++)

定义

用一个中介对象来封装(封装变化)一系列的对象交互。中介者使各对象不需要显式的相互引用(编译时依赖->运行时依赖),从而使其耦合松散(管理变化),而且可以独立地改变它们之间的交互。

应用场景

  • 在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。
  • 在这种情况下,我们可使用一个“中介对象”来管理对象间的关联关系,避免相互交互的对象之间的紧耦合引用关系,从而更好地抵御变化。

结构

在这里插入图片描述

代码示例

//Mediator.h
/****************************************************/
#ifndef MEDIATOR_H
#define MEDIATOR_H
#include <iostream>
using namespace std;class User
{
public:User(string tname) { name = tname; };~User() {};string getName() { return name; };void setName(string tname) { name = tname; };void sendMessage(string message);private:string name;
};class ChatRoom
{
public:ChatRoom() {};~ChatRoom() {};static void showMessage(User *user, string message) {cout << " [" << user->getName() << "] : " << message << endl;};
};void User::sendMessage(string message)
{ChatRoom::showMessage(this, message);
}#endif
//test.cpp
/****************************************************/
#include "Mediator.h"
int main()
{User robert("Robert");User john("John");robert.sendMessage("Hi! John!");john.sendMessage("Hello! Robert!");return 0;
}

运行结果

在这里插入图片描述

要点总结

  • 将多个对象间复杂的关联关系解耦,Mediator模式将多个对象间的控制逻辑进行集中管理,变“多个对象互相关联为“多个对象和一个中介者关联”,简化了系统的维护,抵御了可能的变化。
  • 随着控制逻辑的复杂化,Mediator具体对 象的实现可能相当复杂。这时候可以对Mediator对象进行分解处理。
  • Facade模式是解耦系统间(单向)的对象关联关系; Mediator模式是解耦系统内各个对象之间(双向)的关联关系。
http://www.lryc.cn/news/113897.html

相关文章:

  • LeetCode热题 100整理
  • SDE与ODE
  • AWK实战案例——筛选给定时间范围内的日志
  • 摄影入门基础笔记
  • 如何在业务中体现TCC事务模型?
  • TouchGFX字库外置的另一种处理方式
  • jvm的垃圾回收算法有哪些
  • untiy 连接两个UI或一段固定一段跟随鼠标移动的线段
  • 如何成为顶级开源项目的贡献者
  • Threads and QObjects
  • Tcp是怎样进行可靠准确的传输数据包的?
  • [SWPUCTF 2022 新生赛]numgame
  • java异常机制分析
  • 浅谈Python中的内存管理 程序的内存布局
  • (具体解决方案)训练GAN深度学习的时候出现生成器loss一直上升但判别器loss趋于0
  • Redis 安装以及配置隧道连接
  • FFmpeg 使用总结
  • 出现Error: Cannot find module ‘compression-webpack-plugin‘错误
  • Elasticsearch 摄取管道 — 检测到管道的死循环
  • C# ListBox自动滚动方法
  • 使用(Ajax原理)Promise + XHR实现请求数据
  • 【HTML】<input>
  • 数据结构中一些零碎且易忘的知识点
  • 2023上半年京东烘干机行业品牌销售排行榜(京东商品数据)
  • ADS版图画封装学习笔记
  • 空地协同智能消防系统——无人机、小车协同
  • 篇二十二:解释器模式:处理语言语法
  • 【LeetCode 75】第二十一题(1207)独一无二的出现次数
  • node中使用express+mongodb实现分页查询
  • 信创优选,国产开源。Solon v2.4.2 发布