当前位置: 首页 > 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对自身的相互引用,然后提供一个类似于工作台的一块空间。

相关文章:

C++演示中介模式

避免两个模块之间的耦合&#xff0c;使用中介模式解决。下面是C代码 #include <iostream> #include <vector>using namespace std;class client;//中介 class mediator { public:void addclient(client* client) {clientVec.push_back(client);}void send(const s…...

Vue的简单入门 一

声明&#xff1a;本版块根据B站学习&#xff0c;创建的是vue3项目&#xff0c;用的是vue2语法风格&#xff0c;仅供初学者学习。 目录 一、Vue项目的创建 1.已安装15.0或更高版本的Node.js 2.创建项目 二、 简单认识目录结构 三、模块语法中的指令 1.v-html 1.文本插值…...

【免费送书活动】《MySQL 9从入门到性能优化(视频教学版)》

本博主免费赠送读者3本书&#xff0c;书名为《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;》。 《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 这本书已经公开…...

export default与export区别

1.定义&#xff1a; export default‌&#xff1a;用于导出模块中的默认成员。一个模块中只能有一个export default&#xff0c;通常用于导出模块的主要功能或对象。导入时可以使用任意名称&#xff0c;因为它没有具体的名称‌ ‌export‌&#xff1a;用于导出模块中的多个成…...

最佳的出牌方法

最佳的出牌方法 真题目录: 点击去查看 E 卷 200分题型 题目描述 手上有一副扑克牌,每张牌按牌面数字记分(J=11,Q=12,K=13,没有大小王),出牌时按照以下规则记分: 出单张,记牌面分数,例如出一张2,得分为2出对或3张,记牌面分数总和再x2,例如出3张3,得分为(3+3+3)x2=1…...

Kotlin 2.1.0 入门教程(二十一)数据类

数据类 数据类主要用于存储数据。 对于每个数据类&#xff0c;编译器会自动生成一些额外的成员函数&#xff0c;这些函数支持将实例打印为易读的输出、比较实例、复制实例等操作。 数据类使用 data 关键字标记&#xff1a; data class User(val name: String, val age: Int…...

30天开发操作系统 第 20 天 -- API

前言 大家早上好&#xff0c;今天我们继续努力哦。 昨天我们已经实现了应用程序的运行, 今天我们来实现由应用程序对操作系统功能的调用(即API, 也叫系统调用)。 为什么这样的功能称为“系统调用”(system call)呢&#xff1f;因为它是由应用程序来调用(操作)系统中的功能来完…...

WEB安全--SQL注入--floor报错注入

一、原理&#xff1a; floor()报错注入需要组合count()、rand()、group by()等函数使用&#xff0c;通过一些手段使数据库在处理语句时产生主键重复的报错&#xff0c;从而达到爆出信息的目的 二、内容&#xff1a; ?id-1 or (select 1 from (select count(*),concat(databa…...

【java面向对象的三大特性】封装、继承和多态

目录标题 一、封装&#xff08;Encapsulation&#xff09;&#xff1a;二、继承&#xff08;Inheritance&#xff09;&#xff1a;三、多态&#xff08;Polymorphism&#xff09;&#xff1a;1. 多态的三个必要条件&#xff1a;2.多态的具体实现&#xff1a;3.多态的使用场景&a…...

Hermite 插值

Hermite 插值 不少实际问题不但要求在节点上函数值相等&#xff0c;而且还要求它的导数值相等&#xff0c;甚至要求高阶导数值也相等。满足这种要求的插值多项式就是 Hermite 插值多项式。 下面只讨论函数值与导数值个数相等的情况。设在节点 a ≤ x 0 < x 1 < ⋯ <…...

【推理llm论文精度】DeepSeek-R1:强化学习驱动LLM推理能力飞跃

最近deepseek R1模型大火&#xff0c;正好复习一下他家的技惊四座的论文https://arxiv.org/pdf/2501.12948 近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;在推理能力上取得了显著进展&#xff0c;但如何进一步有效提升仍然是研究热点。DeepSeek-AI发布了 DeepS…...

arm linux下的中断处理过程。

本文基于ast2600 soc来阐述&#xff0c;内核版本为5.10 1.中断gic初始化 start_kernel() -> init_IRQ() -> irqchip_init() of_irq_init()主要是构建of_intc_desc. 489-514: 从__irqchip_of_table中找到dts node中匹配的of_table(匹配matches->compatible)&#xf…...

C语言:指针详解

C语言&#xff1a;指针详解 1&#xff1a;指针的基本概念1&#xff1a;什么是指针2&#xff1a;为什么要引入指针3&#xff1a;指针的作用4&#xff1a;指针的类型 2&#xff1a;指针的声明与初始化1&#xff1a; 指针的声明2&#xff1a; 指针的初始化 3&#xff1a;指针的操作…...

github用户名密码登陆失效了

问题&#xff1a; git push突然推代码需要登陆&#xff0c;但是用户名和密码正确输入后&#xff0c;却提示403 git push# Username for https://github.com: **** #Password for https://gyp-programmergithub.com: #remote: Permission to gyp-programmer/my-app.git denie…...

【删除tomcat默认管理控制台】

停止Tomcat&#xff1a; ./catalina.sh stop 删除管理控制台应用&#xff1a; 进入Tomcat的webapps目录&#xff1a; cd /path/to/tomcat/webapps List item 删除manager和host-manager文件夹&#xff1a; rm -rf manager host-manager 启动Tomcat&#xff1a; ./catali…...

动态库与静态库:深入解析与应用

在软件开发中&#xff0c;库&#xff08;Library&#xff09;是预编译的代码集合&#xff0c;用于在多个程序之间共享功能。根据链接方式的不同&#xff0c;库主要分为两种类型&#xff1a;静态库&#xff08;Static Library&#xff09; 和 动态库&#xff08;Dynamic Library…...

【鱼眼镜头12】Scaramuzza的鱼眼相机模型实操,不依赖于具体的相机几何结构,直接从图像数据出发,因此更具灵活性。

文章目录 Scaramuzza相机模型标定效果2、原理和代码代码1、 2D映射到3D&#xff0c;函数输入为2D点坐标OCAM参数代码功能详解2、3D --> 2D 3、总结Scaramuzza 模型的核心思想Scaramuzza 模型的核心思想与 Kannala-Brandt 模型的对比Scaramuzza 模型的独特之处Scaramuzza 的意…...

LVS 负载均衡集群(NAT模式)

一、环境准备 四台主机&#xff08;一台 LVS、两台 RS、一台客户端&#xff09; 注意每个虚拟机都需要关闭防火墙和 selinux 1.1.LVS 主机 LVS 主机&#xff08;两块网卡&#xff09; 第一块&#xff1a;NAT模式&#xff08;内网&#xff09; 第二块&#xff1a;添加网卡&am…...

MATLAB中的APPdesigner绘制多图问题解析?与逻辑值转成十进制

在matlab APPdesigner中绘图可以用UIAxes组件进行绘图&#xff0c;但是当想多张图时&#xff0c;只能提前绘制图像区域不方便。下面是几种办法&#xff1a; 为了操作可以添加Panl组件&#xff0c;方便操作。 1、当是要求的几个图像大小都是相同时刻采用函数&#xff1a; til…...

9种慢慢被淘汰的编程语言...

技术不断进步&#xff0c;我们使用的编程语言也不例外。 随着人工智能的兴起以及对编程语言使用的影响&#xff0c;我们更加关注哪些语言将在未来继续流行&#xff0c;哪些会被淘汰。 Python、Java 和 JavaScript 等多功能编程语言正在主导市场&#xff0c;而其他一些语言则逐…...

新手如何通过Taotoken快速获得第一个可用的AI大模型API Key

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 新手如何通过Taotoken快速获得第一个可用的AI大模型API Key 对于希望将大模型能力集成到应用中的开发者而言&#xff0c;获取一个稳…...

基于Docker部署开源媒体服务器:打造私人Netflix的完整指南

1. 项目概述与核心价值最近在折腾一些本地化的媒体管理和播放方案&#xff0c;偶然间在GitHub上发现了slicenferqin/clawplay这个项目。简单来说&#xff0c;这是一个基于Web的、自托管的媒体库管理和播放器应用。它的核心目标&#xff0c;是让你能在一个统一的、美观的界面上&…...

5步轻松上手:使用LeaguePrank免费美化你的英雄联盟客户端界面 [特殊字符]

5步轻松上手&#xff1a;使用LeaguePrank免费美化你的英雄联盟客户端界面 &#x1f3ae; 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 想要让你的英雄联盟客户端界面变得与众不同吗&#xff1f;LeaguePrank是一款基于官方LC…...

API集成:企业数字化的隐秘动脉

于企业的IT范畴之内&#xff0c;数据如同血液那般流动&#xff0c;然而则API乃是连接器官的血管。当一家公司同时运用ERP、CRM、WMS、HRM等数十个系统之际&#xff0c;要是没有高效的集成方式&#xff0c;那么这些系统就会变成互不相通的信息孤岛&#xff0c;财务部的数据需手动…...

从零搭建专属AI助手:OpenClaw框架实战指南

1. 从零到一&#xff1a;为什么你需要一个自己的AI助手&#xff1f; 如果你对“AI助手”的印象还停留在网页聊天框里那个一问一答的机器人&#xff0c;或者觉得它离你的日常工作生活很远&#xff0c;那今天咱们就来聊聊一个能真正“活”在你身边、为你所用的AI助手——OpenCla…...

SAP PS项目结算避坑指南:手把手教你配置OKG1到OKG8,搞定在制品与成本结转

SAP PS项目结算实战指南&#xff1a;从配置到凭证的完整避坑手册 月末关账时&#xff0c;项目结算环节总是让不少SAP顾问辗转反侧。那些看似简单的配置选项背后&#xff0c;往往藏着让整个月结流程功亏一篑的"陷阱"。本文将带您深入OKG1到OKG8的配置迷宫&#xff0c;…...

SGP40 VOC传感器实战:基于STM32CubeMX的IIC驱动与空气质量指数换算详解

SGP40 VOC传感器实战&#xff1a;基于STM32CubeMX的IIC驱动与空气质量指数换算详解 在智能家居和工业环境监测领域&#xff0c;VOC&#xff08;挥发性有机化合物&#xff09;传感器正成为空气质量评估的核心组件。SGP40作为Sensirion推出的数字气体传感器&#xff0c;以其高精度…...

移动端N8N管理工具Nathan:React Native构建的自动化运维利器

1. 项目概述&#xff1a;Nathan&#xff0c;你的移动端N8N控制中心如果你和我一样&#xff0c;是个重度自动化爱好者&#xff0c;把N8N当作数字世界的“瑞士军刀”&#xff0c;那你肯定也遇到过这样的场景&#xff1a;正躺在沙发上&#xff0c;突然想起有个工作流需要紧急触发&…...

小红书数据采集终极指南:5个简单技巧破解反爬限制

小红书数据采集终极指南&#xff1a;5个简单技巧破解反爬限制 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 在小红书数据采集领域&#xff0c;许多开发者都面临着动态签名…...

如何快速成为全栈Web开发者:免费资源与游戏化学习的终极指南

如何快速成为全栈Web开发者&#xff1a;免费资源与游戏化学习的终极指南 【免费下载链接】Become-A-Full-Stack-Web-Developer Free resources for learning Full Stack Web Development 项目地址: https://gitcode.com/gh_mirrors/be/Become-A-Full-Stack-Web-Developer …...