c++之代理模式

C++代理模式的实现 代理模式 - Proxy Pattern模式思想简介组成优点代码实现情景代码解读结果参考资料 模式思想 简介 代理模式:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 组成 抽象角色:通过接口或抽象类声明真实角色实现的业务方法; 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用; 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己 阅读详情

代理模式

代理模式属于结构型模式。

定义:

代理即一个类代表另一个类的功能。

比如篮球运动员通过经纪人与老板谈薪,那么经纪人就是篮球运动员的代理。

在代理模式中,通过创建一个具有需要代理对象的代理,以便向外界提供需要的功能。

加深理解:

在某些情况下,一个类对象不适合或者不能直接引用另一个类对象,
所以可以交给代理类去完成这个中介的作用,是不是感觉和中介模式有点像。
其实中介模式和代理模式概念是比较接近,但是实际实现却是不同的。

假设有A、B、C三个类,A与B想交流,但是A却因为某种原因,不能直接和B交流
所以需要通过C来代理,而C这个代理其实只封装了A的对象。相当于C就是A的全权代表了。
这个就是代理模式。

中介模式呢,A、B想交流,但是需要通过C来牵线,在C这个类中,封装了A与B的对象。
而代理模式C只封装了A,这就是中介模式和代理模式的不同点。
在现实中,中介模式和买房卖房很像,代理模式和律师帮忙打官司很像。
 

类图:

应用场景:

现在苹果公司需要生产AirPods耳机,委托立讯精密代理生产。

代码:

#include <iostream>
using namespace std;

//抽象工厂
class IFactory
{
public:
	virtual ~IFactory() {}
	virtual void createProduct() = 0;
};

//苹果AirPods耳机工厂
class AppleAirpodsFactory :public IFactory
{
public:
	void createProduct()
	{
		cout << "生产苹果AirPods耳机" << endl;
	}
};

//立讯精密公司代理生产
class ILXCompanyProxy :public IFactory
{
public:
	ILXCompanyProxy(IFactory* f) :m_factory(nullptr)
	{
		m_factory = f;
	}

	void createProduct()
	{
		cout << "立讯精密代理:" << endl;
		m_factory->createProduct();
	}
private:
	IFactory* m_factory;
};

//客户端
int main()
{
	IFactory* factory = new AppleAirpodsFactory;
	ILXCompanyProxy* proxy = new ILXCompanyProxy(factory);

	proxy->createProduct();

	if (factory) delete factory;
	if (proxy) delete proxy;

	getchar();
	return 0;
}

输出:

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

相关推荐

C++结构型模式-代理模式

1 模式介绍 代理模式(Proxy Pattern):给某一个对象提供一个代理,并由代理对象控制对原对象的引用。 2 模式结构 3 模式优缺点 4 模式应用 5 模式实现 参考文献: 【1】

灰太狼的小秘密 2965

C++ 设计模式之代理模式

⽐如说有⼀个⽂件加载的场景,为了避免直接访问“⽂件”对象,我们可以新增⼀个代理对象,代理对象中有⼀个对“⽂件对象”的引⽤,在代理对象的 load ⽅法中,可以在访问真实的⽂件对象之前进⾏⼀些操作,⽐如权限检查,然后调⽤真实⽂件对象的 load ⽅法,最后在访问真实对象后进⾏其他操作,⽐如记录访问⽇志。代理模式可以控制客户端对真实对象的访问,从⽽限制某些客户端的访问权限,此外代理模式还常⽤在访问真实对象之前或之后执⾏⼀些额外的操作(⽐如记录⽇志),对功能进⾏扩展。代理模式的主要⽬的是控制对对象的访问。

K1_uestc的博客 1579

C++ 代理模式

代理模式(Proxy Pattern)为其他对象提供了一种代理,以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

青春不老,奋斗不止! 1万+

设计模式之代理模式(C++)

介绍设计模式之代理模式

翟天保的博客 2万+

C++代理模式

代理模式是一种结构型设计模式,它允许通过创建一个代理对象来控制对另一个对象的访问。代理对象充当原始对象的接口,客户端通过代理对象进行交互,代理对象则处理客户端请求并在必要时将其转发给原始对象。通过代理模式,我们可以控制对真实图片对象的访问,并在必要时添加额外的逻辑。在C++中实现代理模式可以使用类来表示代理对象和原始对象,并定义它们共同的接口。时,由于图片已经加载过了,代理对象直接调用已加载的图片对象的。类,它是实际的图片类,负责加载和显示真正的图片。时,代理对象会创建并加载真正的图片对象,并调用其。

CodeByte的博客 150

【Ensp】FTP服务器设置和FTP解析

大部分的多媒体多媒体应用协议,如SIP,FTP,NetMeeting协议等,使用约定的固定端口来初始化一个控制连接,再动态地选择端口用于数据传输,并且这些端口选择是不可预测的。在防火墙设置时,可以通过ASPF(应用层报文过滤)中的Server Map表来满足多通道协议的正常工作,它正常检测应用层报文信息,并动态地根据报文内容创建和删除临时的Server Map表项,以允许其它非约定端口通过防火墙。(5)我们可以在路由器或能访问ftp服务器的设备上,通过cli命令行的方式来访问ftp服务器。

进击的小小白 1862

【Proxy模式】C++设计模式——代理模式

C++代理模式,Proxy模式,本文以现实社会例子来阐述该模式,通过对代理模式的概括、总结、代码对比分析来帮助读者了解该模式

不负AC不负卿的博客 2845

ISO26262 功能安全各个阶段测试要求

1. 开发过程说明 系统层面:包括软硬件集成测试、系统集成测试以及整车测试。 硬件层面:包括硬件集成与测试。 软件层面:单元测试、集成测试。 2. 功能安全总体要求 2.1 各项指标 2.2 诊断覆盖度举例 针对一个信号举例说明: 3. 功能安全测试要求 3.1 测试计划 核心内容应包括, 测试对象:需要测试的对象描述,以及测试的范围描...

AgingMoon的博客 1万+

C++ 设计模式——代理模式

代理模式(Proxy Pattern)是一种结构型设计模式,通过代理对象控制对其他对象的访问。代理模式通常用于控制对某个对象的访问,提供额外的功能,如延迟加载、访问控制、日志记录等。 其主要实现思想是在客户端和真正要访问的对象之间引入一个代理对象(间接层),于是,以往客户端对真正对象的访问现在变成了通过代理对象进行访问,代理对象在这里起到了一个中介或者桥梁作用。引人代理对象的主要目的是可以为客户端增加额外的功能、约束或针对客户端的调用屏蔽一些复杂的细节问题。

慢慢记录,慢慢更新。 2508

Zemax物理光学实战:3分钟搞定高斯光束传播模拟(附菲涅尔局部分析技巧)

本文详细介绍了在Zemax中进行高斯光束传播模拟与菲涅尔局部分析的实战技巧。通过3分钟快速设置指南和参数解析,帮助光学工程师准确模拟激光光束特性,避免常见误区。特别分享了菲涅尔局部分析的关键技巧和传播参数优化策略,提升光学系统设计的精度与效率。

lambda的博客 804

售货机非现金支付开发指南:MDB协议下VPOS刷卡器的那些坑

本文深入探讨了MDB协议下非现金支付设备的开发实践,重点解析了NAYAX VPOS刷卡器的集成难点与解决方案。从RS232通信参数配置到Always idle功能实现,提供了一套完整的售货机支付系统开发指南,帮助开发者规避常见陷阱,提升设备兼容性与交易稳定性。

weixin_29258297的博客 134

【C++】—— 代理模式

代理模式详解

m0_56069910的博客 1514

Python爬虫深度对抗:拼多多与得物价格监控系统中的设备指纹模拟与SkyWalking风控绕过实战

在电商数据采集领域,拼多多和得物(毒)APP堪称国产风控系统的“双子星”。前者依托于拼多多集团强大的安全团队,后者则以其独特的“潮流单品”数据价值和高昂的爬取成本闻名。对于任何一名爬虫工程师而言,能够稳定、高效地获取这两大平台的价格、库存、销量等动态信息,都是一项极具挑战性的技术试金石。传统的基于requests库的简单HTTP请求,在面对这两款应用时几乎寸步难行。你会发现,无论怎样伪造User-Agent、怎样轮换代理IP,返回的永远是状态码412403,或者是一个包含验证滑块设备异常的JSON错误。

2201_76125261的博客 864

【C++】代理模式

代理模式(Proxy Pattern)是一种【结构型】设计模式,它允许通过代理对象控制对另一个对象(目标对象)的访问。代理对象在客户端和目标对象之间充当中间层,负责处理与目标对象的交互,例如延迟加载、访问控制、缓存或日志记录等。

AAADiao的博客 1302

基于YOLOv10的PCB电子元件智能识别系统设计与实现

数据预处理模块:负责对原始PCB图像进行标注、增强和格式转换模型训练模块:基于YOLOv10架构进行模型训练和优化推理检测模块:加载训练好的模型进行实时检测用户界面模块:提供友好的交互界面,方便用户操作和结果可视化YOLO(You Only Look Once)系列算法自2016年提出以来,经历了多次迭代更新。YOLOv1-v3:奠定了YOLO系列的基础架构YOLOv4-v7:引入大量优化技巧和网络结构改进YOLOv8-v9:进一步优化模型结构和训练策略YOLOv10。

YOLO 156

时频分析之短时傅里叶变换(STFT)

本文利用MATLAB自带的spectrogram函数对信号做短时傅里叶变换。首先介绍了短时傅里叶变换(STFT)的背景及意义;其次,对spectrogram函数的用法以及变量的含义做了详细的解释;最后,利用MATLAB编写程序实现了信号的STFT。

总结论文中的算法并给出论文的复现代码 7万+

C++ 代理模式(Proxy Pattern)

随意写的,主要用作代码练习,防止代码生疏,敬请见谅! 本意是能够写成一个多用途的代理模式,结果还是写废了,其他方面来说,没有时间重整它,有的写法是没有太大意义的。期望有点价值吧 首先放一个代理模式的讲解,个人觉得写得不错,如果你是寻求代理模式的用法用途的话,值得一看: 代理模式原理及实例讲解 //ProxyPattern.h #pragma once #include #inc

你好,旅行者 1210

osgEarth 球上显示地形数据库

osgEarth 球上显示地形数据库 本文展示了一种由DSM和DEM得到Osgb工程,并在osgEarth球上显示的方法。其中DSM、DOM到Osgb工程的转换由VPB(VirtualPlanetBuilder)来实现,并采用Model图层将Osgb工程在球上显示。 本文主要解决一下问题: VPB编译 VPB生成地形 地形在球上显示 目录 1 前言 2 VPB编译与使用 3 地形在osgEarth球上显示 内容 1 前言 VirtualPlanetBuilder是一个开源代码工具,用于根据

CPWWHSU的博客 2433

[C++]代理模式

代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。 C++代码如下: // 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // // 参考大话设计模式 #include <iostream> using namespace std; class CGiveGift { public: vir...

就是那个党伟 403

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

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

C++ · 设计模式 (接口隔离=Proxy<代理模式>)

代理模式是一种结构型设计模式,用于控制对对象的访问。它通过引入代理对象在不修改原对象的情况下增加额外功能或限制访问。核心思想是"间接访问",符合开闭原则和单一职责原则。典型应用场景包括虚拟代理(延迟加载)、保护代理(访问控制)、远程代理(网络通信)和智能引用(资源管理)。C++中常见于智能指针、RPC框架等实现。该模式通过代理类控制对真实主题的访问,可在调用前后添加额外逻辑,客户端无需感知使用的是代理还是真实对象。

qq_35223555的博客 810

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C++设计模式---代理模式

(1)远程代理(Remote Proxy):为一个位于不同地址空间的对象提供一个本地的代理对象,这个对象作为该远程对象的代表,以隐藏一个对象存在于不同地址空间的事实。代理对象在客户端和目标对象之间起到中介的作用,可以隐藏目标对象的实现细节,增加额外的功能(如访问控制、日志记录、性能监控等),或者对目标对象的访问进行优化。(2)代理对象(Proxy):持有目标对象的引用,控制对目标对象的访问,并可能提供额外的功能。(1)目标对象(Real Subject):代理对象所代表的真实对象,是最终要引用的对象。

专注 745

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C++设计模式代理模式

我们还定义了一个代理对象 Proxy,该对象包含了实际对象 RealSubject 并实现了相同的接口。在代理对象的请求方法中,我们执行了一些额外的操作并调用了真实对象的请求方法。使用代理模式可以隐藏真实对象的复杂性,并提供更加简单的接口。它也可以实现对象之间的松耦合,使得我们可以独立地改变真实对象的实现,而不必影响到客户端。代理模式(Proxy Pattern)是一种结构型设计模式,它提供了一个代理对象来控制对另一个对象的访问。代理对象与原始对象具有相同的接口,因此客户端可以不知道代理对象的存在。

guoguo0524的博客 972

Qt C++设计模式->代理模式

是一种结构型设计模式,允许通过代理对象来控制对其他对象的访问。代理模式可以在不改变真实对象的情况下,提供额外的控制逻辑,如访问控制、延迟加载、日志记录等。

m0_46494667的博客 1271

C++设计模式-代理模式

目录 基本概念 代码及演示 基本概念 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 UML图如下: 以本人目前(2019-06-12)个人的水平对代理的认识: 真实对象可以用于存储数据,并做一些基本的逻辑。 代理可以进行复制的逻辑。 代码及演示 程序运行截图如下: 结构如下: Head.h #ifndef H...

IT1995的博客 4606

c++代理模式

c++代理模式简介UML优点缺点使用场景代码参考 简介 代理模式也称为委托模式。作用就是找一个对象来替我们访问某个对象。 意图:为其他对象提供一种代理以控制对这个对象的访问。 UML 1.Subject:定义RealSubject和Proxy的共用接口,这样就可以在任何使用RealSubject的地方都可以使用Proxy。 2.RealSubject:真实处理业务的角色。 3.Proxy:保存一个引用使得代理可以访问实体。 优点 职责清晰:真实角色就是实现实际的业务逻辑,不关心其他非本职责的事务,通过后期

lvxu666的博客 267
上一篇: c++之简单工厂模式
下一篇: c++之工厂方法模式
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值