c++之中介者模式

C++行为型模式-中介者模式 1 模式介绍 中介者模式(Mediator Pattern):用一个中介对象来封装一系列的对象交互,中介者使得个对象不需要显示地相互引用,从而使得耦合松散,而且可以独立地改变它们之间的交互。 2 模式结构 (1)抽象中介者(Mediator) 抽象中介者用于定义一个接口,该接口用于与各同事对象之间的通信; (2)具体中介者(ConcreteMediator) 具体中介者是抽象中介者的子类,通过协调各个对象来实现协作行为,了解并维护它对各个同事对象的引用; (3)抽象同事类(Colleag. 阅读详情

中介者模式属于行为型模式。

定义:采用一个中介对象来封装一系列的对象交互。

优点:使得各个对象不需要显式的相互引用,达到解耦的效果。

UML类图

栗子场景:买房和卖房都担心被骗,然后通过房产中介做交互

代码

#include <iostream>
#include <string>
using namespace std;

class HousePerson;
class BuyHousePerson;
class SellHousePerson;

//抽象中介类
class Mediator{
public:
	virtual void sendMessage(string msg, HousePerson *p) = 0;
};

//抽象炒房客
class HousePerson{
public:
	HousePerson(Mediator *mediator)
	{
		m_mediator = mediator;
	}
protected:
	Mediator *m_mediator;
};

//买房的人
class BuyHousePerson :public HousePerson
{
public:
	BuyHousePerson(Mediator *mediator) :HousePerson(mediator){}
	void sendMsg(string msg)
	{
		m_mediator->sendMessage(msg,this);
	}
	void notify(string msg)
	{
		cout << "买房者得到消息:" << msg << endl;
	}
};

//卖房的人
class SellHousePerson :public HousePerson
{
public:
	SellHousePerson(Mediator *mediator) :HousePerson(mediator){}
	void sendMsg(string msg)
	{
		m_mediator->sendMessage(msg, this);
	}
	void notify(string msg)
	{
		cout << "卖-房者得到消息:" << msg << endl;
	}
};

//具体中介类
class ConcreteMediator :public Mediator
{
public:
	void sendMessage(string msg, HousePerson *p)
	{
		if (p == bh)
		{
			sh->notify(msg);
		}
		else
		{
			bh->notify(msg);
		}
	}

public:
	BuyHousePerson *bh;
	SellHousePerson *sh;
};

//客户端
int main()
{
	ConcreteMediator *pM = new ConcreteMediator;
	BuyHousePerson *pBh = new BuyHousePerson(pM);
	SellHousePerson* pSh = new SellHousePerson(pM);

	pM->bh = pBh;
	pM->sh = pSh;

	pBh->sendMsg("卖不卖,一口价780W");
	pSh->sendMsg("不卖,至少800W!");

	if (pM)
	{
		delete pM;
		pM = nullptr;
	}
	if (pBh)
	{
		delete pBh;
		pBh = nullptr;
	}
	if (pSh)
	{
		delete pSh;
		pSh = nullptr;
	}

	return 0;
}

效果:

设计模式C++实现(13)——中介者模式 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。中介者模式。 阅读详情

相关推荐

C++ 中介者模式

中介者模式(Mediator Pattern)用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

青春不老,奋斗不止! 5589

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

中介者模式(Mediator Pattern)是一种行为型设计模式,它允许对象间的通信被封装到一个中介者对象中。该模式的主要目的是减少多个对象和类之间的通信复杂性,通过创建一个集中的控制点来管理相互间的依赖关系。这种模式特别适用于大型系统中,可以帮助减少组件之间的直接交互,从而使其更易于维护和扩展。

慢慢记录,慢慢更新。 3249

中介者模式的C++实现

然后,我们实现了具体的同事类(ConcreteColleague)和具体的中介者类(ConcreteMediator)。通过使用中介者模式,我们可以实现对象之间的松耦合,提高代码的可维护性和扩展性。中介者模式是一种行为型设计模式,它通过将对象之间的交互行为封装到一个中介者对象中,从而使对象之间的耦合度降低。在中介者模式中,对象之间的交互通过中介者对象进行,而不是直接相互调用。这样做的好处是,当对象之间的交互逻辑发生变化时,只需要修改中介者对象而不影响其他对象。然后,将同事对象添加到中介者对象中。

2301_79325657的博客 113

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

第一行包括一个整数N,表示用户的数量(1

K1_uestc的博客 2257

C++设计模式17:中介者模式

中介者模式是一种行为型设计模式,它的目的是通过将对象之间的通信转移给中介者对象来减少对象之间的直接耦合,从而提高系统的可维护性和可扩展性。在中介者模式中,多个对象之间的通信不再直接进行,而是通过中介者对象进行协调。中介者对象通常包含一个接口,用于与其他对象进行通信,并能够根据接收到的消息来进行相应的处理。当对象需要与其他对象进行通信时,它们不再直接向目标对象发送消息,而是将消息发送给中介者对象,由中介者对象来协调处理。

琅嬛福地 998

UE5 C++教程(一、基本结构)

虚幻API由三块组成,分别是Runtime,Developer utilitiew,functionality for the Editor,大多数游戏性编程只使用运行时模块,最常见的三个是Corn、CornUObject和Engine。

skycol的博客 1万+

C++设计模式(21)——中介者模式

C++ 中介者模式

伍粟的博客 1207

土地利用数据从1972到2023:如何利用Landsat和Sentinel数据构建长期变化监测模型

本文详细解析了如何利用1972至2023年的Landsat和Sentinel遥感数据构建土地利用长期变化监测模型。通过多源数据融合策略、时间序列预处理流程和深度学习算法,实现高精度的土地利用分类与变化检测,为生态评估和城市规划提供科学依据。文章还探讨了验证方法和实际应用案例,展示了长期遥感数据在环境建模中的独特价值。

weixin_28720573的博客 443

【Mediator模式】C++设计模式——中介者模式

C++中介者模式,Mediator模式,本文以问题引入与联系现实讲解中介者模式,同时通过代码展示了中介者模式

不负AC不负卿的博客 982

无人机避障——感知篇(采用Mid360复现Fast-lio)

本文介绍了在Ubuntu 18.04和ROS Melodic环境下,使用Xavier-nx电脑和Livox Mid-360激光雷达编译和运行FAST-LIO工程的步骤,包括创建工作空间、编译驱动和FAST-LIO源码,以及运行launch文件进行建图的过程。

weixin_45390670的博客 3545

S32K144 SDK实战:FTM输入捕获模块的配置与应用

本文详细介绍了S32K144 SDK中FTM输入捕获模块的配置与应用实践。从基础认知到开发环境搭建,再到引脚配置和中断处理技巧,全面解析了如何利用FTM模块实现高精度信号测量。特别适用于电机控制、工业测速等场景,帮助开发者快速掌握S32K144的FTM输入捕获功能。

weixin_42566424的博客 217

C++设计模式——中介者模式(Mediator Pattern)

C++设计模式——中介者模式(Mediator Pattern) 微信公众号:幼儿园的学霸 目录 文章目录C++设计模式——中介者模式(Mediator Pattern)目录引言定义代码示例总结参考资料 引言 假设现在科技发达之后,家里所有设备都是智能化的,而小明在家洗澡的时候有个习惯就是喜欢听歌,而且洗澡时候还要把窗帘拉上。因此就有这种情形,小明要拉窗帘可能就是要洗澡,当然也要听歌,因此我们希望小明家的洗浴设备,音响设备和窗帘设备都能协同合作,不管操作哪种设备,其他两种设备都有一定响应,以此写出程序。

leonardohaig的博客 1891

OpenHarmony实战开发-如何实现文件分布式同步编辑

在分布式文件场景中,分布式设备管理包含了分布式设备搜索、分布式设备列表弹窗、远端设备拉起三部分。首先在分布式组网内搜索设备,然后把设备展示到分布式设备列表弹窗中,最后根据用户的选择拉起远端设备。两台设备组网的分布式场景是工作中常常需要的。这样的分布式场景有助于加快工作效率,减少工作中的冗余,本例将为大家介绍如何实现上述功能。​ (2)订阅分布式数据变化:通过this.distributedObject.on(‘status’, this.statusCallback)监听分布式数据对象的变更。

2401_82546228的博客 751

【c++设计模式19】行为模式4:中介者模式(Mediator Pattern)

中介者模式定义了一个中介者接口(Mediator),该接口包含了协调多个对象之间的方法。具体中介者类(Concrete Mediator)实现了中介者接口,并且对多个相关对象之间的交互进行控制。每个相关对象(Colleague)都包含一个指向中介者对象的引用,并且在需要与其他相关对象通信时,通过中介者对象来进行交互。

junxuezheng的博客 1628

13、深入理解 Microsoft 365 的安全与合规概念

本文深入探讨了 Microsoft 365 的安全与合规概念,涵盖文档存储、文件共享、审计、保留、eDiscovery、分类和保护以及网络等多个关键方面。通过合理配置这些功能,组织可以更好地管理和保护其数据资源,满足法规要求,并提升工作效率。文章还提供了最佳实践建议及流程图,帮助读者全面理解 Microsoft 365 的安全架构和管理策略。

k8s6orchestrator的博客 211

32、运算放大器的工作原理与应用

本文详细介绍了运算放大器的工作原理与多种应用场景,涵盖开环与闭环放大器的基本概念、理想运算放大器的特性及其‘黄金规则’。文章深入解析了反相放大器、同相放大器、单位增益跟随器与反相器的配置和增益计算,并探讨了电压比较器及窗口比较器的工作机制。同时提供了运算放大器在实际应用中的选型流程、使用注意事项以及常见故障排查方法,帮助读者全面掌握运算放大器的设计与应用要点。

u5v6w7的博客 163

C++设计模式——中介者模式(mediator pattern)

一、原理讲解 1.1意图 用一个中介对象来封装一系列的对象。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 1.2应用场景 一组对象以定义良好但复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解; 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象; 想定制一个分布在多个类中的行为,而又不想生成太多的子类; 1.3结构图(UML图) 1.4代码实现步骤 a1 定义一个中介者接口类IMediator,定义两个接口函数send()和add()

净无邪博客 1461

华为OD机试真题 新系统2026-04-01 C语言 实现【空间占用计算】

员工A的磁盘空间经常被耗尽,他需要找到占用空间最大的目录或文件,然后决定如何清理文件释放空间。给定某一目录,请编写程序帮助他统计该目录内一级子目录和文件的占用空间,并返回目标目录一级子项(文件或子目录)中占用空间最大的项。

MISAYAONE的博客 229

【C++】中介者模式

中介者模式(Mediator Pattern)是一种【行为型】设计模式,它通过一个中介对象来封装一系列对象之间的交互,使各对象不需要显式地相互引用,从而降低耦合度,并可以独立地改变它们之间的交互。这种模式将多对多的交互转化为一对多的交互,使系统更易于维护和扩展。

AAADiao的博客 1046

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

中介者模式(Mediator Pattern)是一种行为设计模式,它的主要目的是通过引入一个中介者对象来简化多个对象之间的交互,降低它们之间的耦合度。中介者模式使得这些对象可以通过中介者进行通信,而不需要直接相互引用,从而使得系统更加灵活和易于维护。

捕鲸叉的专栏 1434

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

(三)行为模式:5、中介者模式(Mediator Pattern)(C++示例)

介绍中介者的含义,应用场景,优缺点,以及C++实现的实例。

bigger_belief的博客 771

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C++实现中介者模式

好了,这是这类型设计模式的最后一个,最后一小节进行大总结。 文章目录1. 情景与意图2. 中介者模式3. MVC4. 大总结 1. 情景与意图   其实看到这个名字,也能对这个设计模式有了一个初步的印象,在我们日常生活中,通常有租房,买房,卖房的需求,这个过程比较漫长和消耗时间,因此我们通常会交给中介去处理,我们不用面对很多人,只用和中介通信即可。   在我们的工程中,也会存在对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同.

走过路过不要错过 387

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

中介者模式(Mediator Pattern) 定义 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 Mediator:中介者,它定义了一...

lihaidong的博客 487

c++中介者模式

设计模式--中介者模式

276

我所理解的设计模式(C++实现)——中介者模式(Mediator Pattern)

假设我们开发一个图片处理软件,里面肯定包括很多相关功能,比如说剪切,旋转,滤镜,美化等等,而我们这些功能所要处理的对象是固定的,就是我们所显示的那张图片。但是我们不能把所有的功能罗列到一个tab上,虽然这样处理方便但是不美观。这是我们可以这样子:用一个中介者类负责所有功能的初始化和具体执行,我们需要功能时直接调用中介者类即可。中介者模式就是定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。

十八道胡同的博客专栏 8058

中介者模式与几个C++应用实例

中介者模式是一种行为设计模式,通过中介对象封装对象间的交互,降低耦合度。该模式包含四个核心角色:中介者接口、具体中介者、同事类接口和具体同事类。文章以聊天室和飞机塔台调度系统为例,展示了中介者模式的C++实现。在聊天室场景中,用户通过中介者发送消息,无需知道其他用户存在;在塔台调度系统中,飞机通过塔台协调起降。该模式优势在于解耦对象、集中控制交互逻辑、易于扩展系统。代码示例演示了如何实现松耦合的星形通信结构,避免复杂的网状依赖关系。

追赶时代的博客 872
上一篇: c++之命令模式
下一篇: c++之职责链模式
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值