参考《大话设计模式》的代理模式,把C#改写成c++的实现
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
在代理模式(Proxy Pattern)中,由于客户端无法直接或者不想直接引用或使用一个对象,所以通过“中间件”起到代理目标对象功能的作用,为其他对象提供一种代理以控制对这个对象的访问。
Subject类
class Subject
{
virtual void Request() = 0;
};
RealSubject类
class RealSubject:public Subject
{
public:
void Request()
{
cout<<"真实请求"<<endl;
}
};
Proxy类
class Proxy:public Subject
{
protected:
RealSubject* realSubject;
public:
void Request()
{
if(realSubject == NULL)
realSubject = new RealSubject();
realSubject->Request();
}
};
测试
int main()
{
Proxy* proxy = new Proxy();
proxy->Request();
delete proxy;
return 0;
}
运行结果:
真实请求