当前位置: 首页 > 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.lryc.cn/news/608790.html

相关文章:

  • [LeetCode优选算法专题一双指针——有效三角形的个数]
  • Python 程序设计讲义(60):Python 的函数——递归函数
  • 从“配置地狱”到“云端乐园”——Nacos 如何成为分布式微服务配置中心的“定海神针”
  • 【MySQL】MySQL中锁有哪些?
  • ethtool,lspci,iperf工具常用命令总结
  • 26李林880高数第一章 函数、极限、连续
  • Shell脚本-变量的定义规则
  • 西门子PLC基础指令4:输出指令、立即输出指令
  • JavaScript 性能优化实战指南:从运行时到用户体验的全面提升​
  • adb 与pad 交互方法
  • MyBatis动态SQL精要:从<if>到<foreach>的灵活拼接之道
  • Go语言声明变量
  • 怎么修改论文格式呢?提供一份论文格式模板
  • 【Bluedroid】btif_av_handle_event 流程源码解析
  • 面向智能体的上下文工程:策略、实现与 LangGraph 实践
  • LangChain4J入门:接入大模型
  • 系统学习算法:专题十六 字符串
  • 第三章-提示词-高级:开启智能交互新境界(13/36)
  • 日常--详细介绍qt Designer常用快捷键(详细图文)
  • 【QT】概述
  • 高质量数据集|建设三大难点
  • 01.MySQL 安装
  • 服务器中切换盘的操作指南
  • Android 之 MVVM架构
  • 使用 Docker 部署 Golang 程序
  • 第四章:OSPF 协议
  • Dify中自定义工具类的类型
  • WebMvc自动配置流程讲解
  • MySQL 索引失效的场景与原因
  • 嵌入式开发学习———Linux环境下IO进程线程学习(二)