作用:
为其他对象提供一种代理以控制对这个对象的访问
#include <iostream>
using namespace std;
class Subject
{
public:
Subject(){}
virtual ~Subject(){}
virtual void request() = 0;
private:
};
class RealSubject:public Subject
{
public:
RealSubject(){
cout << "Constructing a RealSubject\n";
}
~RealSubject(){
}
void request(){
cout << "Request By RealSubject\n";
}
};
class Proxy:public Subject
{
public:
Proxy():realSubject(NULL){
cout << "Constructing a Proxy\n";
}
~Proxy(){
delete realSubject;
realSubject = NULL;
}
void request(){
if (NULL == realSubject)
{
cout << "Request By Proxy\n";
realSubject = new RealSubject();
}
realSubject->request();
}
private:
RealSubject *realSubject;
};
int main(void)
{
Subject* pProxy = new Proxy();
pProxy->request();
delete pProxy;
return 0;
}

本文通过C++代码示例介绍了代理模式的基本概念及其实现方式。代理模式为真实对象提供了一个代理来控制对该对象的访问,可以用于延迟加载等场景。
1438

被折叠的 条评论
为什么被折叠?



