代理模式通过代理类控制对真实对象的访问,适用于延迟加载、权限控制等场景。①定义抽象基类Subject声明接口;②RealSubject实现具体逻辑;③Proxy持有RealSubject指针,通过多态统一处理请求,在调用前后可附加控制逻辑。
代理模式的核心是通过一个代理类来控制对真实对象的访问,适用于需要延迟加载、权限控制、日志记录或远程调用等场景。在C++中,代理模式通常通过接口(抽象基类)和多态实现。
为了让代理类和真实类能被统一处理,先定义一个抽象基类,声明共同的操作接口。
class Subject {
public:
virtual ~Subject() = default;
virtual void request() = 0;
};
真实类继承接口并实现具体逻辑,它是被代理的目标对象。
class RealSubject : public Subject {
public:
void request() override {
std::cout << "RealSubject: 处理请求\n";
}
};
代理类也继承同一接口,在内部持有真实对象的指针。它可以在转发请求前后添加额外控制逻辑。
class Proxy : public Subject {
private:
RealSubject* realSubject;
bool hasAccess;
void checkAccess() {
std::cout << "Proxy: 检查访问权限...\n";
}
void logAccess() {
std::cout << "Proxy: 记录请求日志\n";
}public:
Proxy(RealSubject* subject, bool access) : realSubject(subject), hasAccess(access) {}
void request() override {
if (hasAccess) {
checkAccess();
if (!realSubject) {
realSubject = new RealSubject();
}
realSubject->request();
logAccess();
} else {
std::cout << "Proxy: 拒绝访问\n";
}
}
~Proxy() override {
delete realSubject;
}};
客户端通过代理访问真实对象,无需知道背后是否经过控制。
int main() {
RealSubject* real = new RealSubject();
Proxy proxy(real, true);
proxy.request(); // 输出完整流程
Proxy limitedProxy(nullptr, false);
limitedProxy.request(); // 被拒绝
return 0;
}
代理模式让访问控制变得灵活。你可以用它实现懒加载——只有在真正需要时才创建真实对象;也可以加入认证、缓存、监控等功能。关键是保持代理与真实对象接口一致,对外表现透明。
基本上就这些。结构简单但很实用。
# c++
# proxy
# 延迟加载
# 多态
# bool
# 指针
# 继承
# 接口
# public
# 对象
# Access
# 适用于
# 加载
# 你可以
# 它是
# 它可以
# 等功能
# 用它
# 时才
# 但很
相关文章:
大连网站设计制作招聘信息,大连投诉网站有哪些?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
XML的“混合内容”是什么 怎么用DTD或XSD定义
婚礼视频制作网站,学习*后期制作的网站有哪些?
全景视频制作网站有哪些,全景图怎么做成网页?
,制作一个手机app网站要多少钱?
如何安全更换建站之星模板并保留数据?
济南企业网站制作公司,济南社保单位网上缴费步骤?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何快速搭建高效可靠的建站解决方案?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
西安大型网站制作公司,西安招聘网站最好的是哪个?
建站之星安装模板失败:服务器环境不兼容?
如何快速上传建站程序避免常见错误?
盘锦网站制作公司,盘锦大洼有多少5G网站?
网站制作网站,深圳做网站哪家比较好?
网站制作公司,橙子建站是合法的吗?
寿县云建站:智能SEO优化与多行业模板快速上线指南
公司网站制作价格怎么算,公司办个官网需要多少钱?
常州自助建站费用包含哪些项目?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
如何在香港免费服务器上快速搭建网站?
建站主机核心功能解析:服务器选择与网站搭建流程指南
威客平台建站流程解析:高效搭建教程与设计优化方案
上海网站制作开发公司,上海买房比较好的网站有哪些?
如何快速使用云服务器搭建个人网站?
广州美橙建站如何快速搭建多端合一网站?
浅析上传头像示例及其注意事项
历史网站制作软件,华为如何找回被删除的网站?
Swift中switch语句区间和元组模式匹配
建站ABC备案流程中有哪些关键注意事项?
山东网站制作公司有哪些,山东大源集团官网?
如何用免费手机建站系统零基础打造专业网站?
制作网站的软件免费下载,免费制作app哪个平台好?
如何在腾讯云免费申请建站?
如何注册花生壳免费域名并搭建个人网站?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
建站之星安装提示数据库无法连接如何解决?
建站之星如何保障用户数据免受黑客入侵?
建站主机无法访问?如何排查域名与服务器问题
网站企业制作流程,用什么语言做企业网站比较好?
制作宣传网站的软件,小红书可以宣传网站吗?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
如何通过西部建站助手安装IIS服务器?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
制作销售网站教学视频,销售网站有哪些?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
*请认真填写需求信息,我们会在24小时内与您取得联系。