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

C++演示中介模式

避免两个模块之间的耦合,使用中介模式解决。下面是C++代码

#include <iostream>
#include <vector>

using namespace std;

class client;

//中介
class mediator {
public:
	void addclient(client* client) {
		clientVec.push_back(client);
	}

	void send(const std::string &str,client* cli);

private:
	std::vector<client*> clientVec;

};

//客户端
class client {
	
public:

	client(mediator* ator,const std::string& name) :mediator(ator),name(name) {
	
	};


	void sendmsg(const std::string& str){
		mediator->send(str,this);
	}

	void getMsg(const std::string& str) {
		std::cout << name << "接收到的消息是:" << str << std::endl;
	}

private:
	mediator *mediator = nullptr;
	std::string name;
};


int main() {

	mediator media;

	client clientA(&media,"甲");
	client clientB(&media, "乙");
	client clientC(&media, "丙");

	media.addclient(&clientA);
	media.addclient(&clientB);
	media.addclient(&clientC);

	clientA.sendmsg("你好");

	clientB.sendmsg("你们好啊");

	return 0;
}


void mediator::send(const std::string &str,client* cli)
{
	for (auto &client : clientVec) {
		if (client != cli) {
			client->getMsg(str);
		}	
	}
}

        上面这段程序中,mediator中的send采取了遍历添加进来的客户端数组,然后判断是不是发送消息的自身,如果不是,就调用其getMsg函数。程序输出如下

        上面这段程序可以根据具体业务的不同,在send函数中实现不同的逻辑,或者是别的什么功能。主要是为了放置client对自身的相互引用,然后提供一个类似于工作台的一块空间。

相关文章:

  • 【设计模式】03-理解常见设计模式-行为型模式(专栏完结)
  • SpringBoot多数据源实践:基于场景的构建、实现和事务一体化研究
  • 第1825天 | 我的创作纪念日:缘起、成长经历、大方向
  • 使用动态规划解决 0/1 背包问题
  • 【mybatis】基本操作:详解Spring通过注解和XML的方式来操作mybatis
  • 前台、后台、守护进程对比,进程组的相关函数
  • 开源ZLMediaKit流媒体服务框架编译使用验证
  • [NOIP2001]统计单词个数
  • vue3-02基础认识vue3中main.js入口文件,app.vue(不存在唯一根节点),扩展程序vue-devtools安装
  • spark任务运行
  • Nessus 工具使用全攻略
  • C++ Primer 函数重载
  • 共享存储-一步一步部署ceph分布式文件系统
  • luoguP8764 [蓝桥杯 2021 国 BC] 二进制问题
  • 嵌入式开发应该具备哪些编程思维?
  • JDK1.8新特性面试题
  • springboot整合redis
  • 随机生成多孔介质matlab程序
  • 【kafka系列】生产者
  • 第十二篇:黑客帝国终章——电子技术思维导图与三电技术进化论
  • 气急败坏!20多名台湾艺人被台当局列为“重点核查对象”
  • “GoFun出行”订单时隔7年扣费后续:平台将退费,双方已和解
  • 马上评|家长抱婴儿值护学岗,如何避免“被自愿”?
  • 国家统计局公布2024年城镇单位就业人员年平均工资情况
  • 王伟妻子人民日报撰文:81192,一架永不停航的战机
  • 会谈时间迟迟未定、核心议题存在分歧,俄乌“土耳其谈判”一波三折