用途
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;
};