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

【设计模式】5.代理模式

用途

1. 远程代理(Remote Proxy)

  • 用于为一个对象在不同地址空间(如不同机器)创建局部代表。
  • 比如:RPC(远程过程调用),你本地调用的是 Proxy,实际由它发起网络请求去访问远程服务。
  • 案例:gRPC、Java 的 RMI、C++ 分布式服务框架。

2. 安全代理(Protect Proxy)

  • 控制权限,防止无权限的客户端访问敏感对象。
  • 比如:用户权限控制,只有管理员用户才能操作某些服务。

3. 智能代理(Smart Reference)

  • 在访问真实对象时,增加一些额外的操作。
    • 引用计数
    • 日志记录
    • 缓存
  • 比如:智能指针(如 std::shared_ptr)、数据库连接池等。

UML

在这里插入图片描述

代码

#pragma once
#include <iostream>// 抽象类
class ISubject
{
public:virtual void request()= 0;
};// 真实类
class RealSubject : ISubject
{
public:void request() override{std::cout << "发送了一条请求" << std::endl;}
};// 代理类
class Proxy : ISubject
{
public:void request() override{rs.request();}
private:RealSubject rs;
};
http://www.dtcms.com/a/313352.html

相关文章:

  • Manus AI与多语言手写识别
  • 什么是“痛苦指数”(Misery Index)?
  • 如何获取网页中点击按钮跳转后的链接呢
  • 在 Cursor 中设置浅色背景和中文界面
  • 抽奖系统中 Logback 的日志配置文件说明
  • 03.一键编译安装Redis脚本
  • 【MySQL】MySQL 中的数据排序是怎么实现的?
  • 深入理解流式输出:原理、应用与大模型聊天软件中的实现
  • 跨语言模型中的翻译任务:XLM-RoBERTa在翻译任务中的应用
  • python---python中的内存分配
  • AI Agent 重塑产业发展新格局
  • 联想笔记本安装系统之后一直转圈圈的问题了?无法正常进入到系统配置界面,原来是BIOS中的VMD问题
  • Autoswagger:揭露隐藏 API 授权缺陷的开源工具
  • 使用CMake构建项目的完整指南
  • [LINUX操作系统]shell脚本之循环
  • 【Qt】QObject::startTimer: Timers cannot be started from another thread
  • 如何玩转 Kubernetes K8S
  • 【QT】概述
  • 快速搭建一个非生产k8s环境
  • Android 之 网络通信(HTTP/TCP/UDP/JSON)
  • 量子物理学的前沿意义虚无、形式混乱
  • 入门MicroPython+ESP32:ESP32链接WIFI全攻略
  • Dify中自定义工具类的类型
  • 多模态后训练反常识:长思维链SFT和RL的协同困境
  • GitLab 代码管理平台部署及使用
  • CCF-GESP 等级考试 2025年6月认证C++一级真题解析
  • 扩散模型(一)——综述
  • 介绍JAVA语言、介绍greenfoot 工具
  • 案例介绍|JSON数据格式的转换|pyecharts模块简介
  • noob靶机复现笔记