代理模式为另一个对象提供了一个替身或占位符以控制对这个对象的访问
使用代理模式创建代表对象, 让代表对象控制某对象的访问, 被代理的对象可以是远程的对象, 创建开销大的对象或需要安全控制的对象
代理模式结构上类似于装饰者模式
#ifndef Proxy_h
#define Proxy_h
#include <string>
using std::string;
class Subject
{
public:
virtual void request() = 0;
};
class RealSubject : public Subject
{
public:
virtual void request()
{
printf("RealSubject request.\n");
}
};
class Proxy : public Subject
{
public:
Proxy(Subject *s) : subject(s) { }
virtual void request()
{
subject->request();
}
private:
Subject *subject;
};
#endif
测试
#include <iostream>
#include "Proxy.h"
int main(int argc, char **argv)
{
RealSubject realSubject;
Proxy proxy(&realSubject);
proxy.request();
return 0;
}