代理模式(Proxy Pattern)是一种结构型设计模式,它提供了一个代理对象来控制对另一个对象的访问。代理对象与被代理对象具有相同的接口,客户端可以通过代理对象来访问被代理对象。
在代理模式中,通常会有一个代理类,它与被代理类都实现相同的接口。代理类可以直接访问被代理类,或者通过其它方式来控制被代理类的访问。代理类的出现可以使得客户端无需直接访问被代理类,从而实现了对被代理类的保护和控制。
#include<iostream>
#include<memory>
using namespace std;
//接口
class Subject {
public:
virtual void request() = 0;
virtual ~Subject() = default;
};
//被代理的对象
class RealSubject :public Subject {
public:
void request()override;
};
void RealSubject::request() {
<< "RealSubject request" << endl;
cout }
//代理
class Proxy :public Subject {
public:
();
Proxy~Proxy()=default;
void request()override;
private:
<RealSubject> realSubject;
shared_ptr};
::Proxy() :realSubject(make_shared<RealSubject>()) {
Proxy
}
void Proxy::request() {
->request();
realSubject}
int main(int argc, char** argv) {
;
Proxy proxy.request();
proxyreturn 0;
}
//RealSubject request