用途
1. 远程代理(Remote Proxy)
- 用于为一个对象在不同地址空间(如不同机器)创建局部代表。
- 比如:RPC(远程过程调用),你本地调用的是 Proxy,实际由它发起网络请求去访问远程服务。
- 案例:gRPC、Java 的 RMI、C++ 分布式服务框架。
2. 安全代理(Protect Proxy)
- 控制权限,防止无权限的客户端访问敏感对象。
- 比如:用户权限控制,只有管理员用户才能操作某些服务。
3. 智能代理(Smart Reference)
- 在访问真实对象时,增加一些额外的操作。
- 引用计数
- 日志记录
- 缓存
- 比如:智能指针(如
std::shared_ptr
)、数据库连接池等。
UML

代码
c++
#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;
};