代理模式
代理模式:为其它对象提供一种代理以控制对这个对象的访问。
优点:
远程代理,可以隐藏一个对象在不同地址空间的事实
虚拟代理:通过代理来存放需要很长时间实例化的对象
安全代理:用来控制真实对象的访问权限
智能引用:当调用真实对象时,代理处理另外一些事
主要解决
:在直接访问对象时带来的问题,比如:要访问的对象在远程服务器上。在面向对象系统中,有些对象由于某些原因,直接访问会给使用者或系统带来很多麻烦,可以在访问此对象时加上一个对此对象的访问层。
如何解决:增加中间代理层。
类图:
代码如下
#include<iostream>
#include<string>
using namespace std;
//定义接口
class Interface {
public:
virtual void Request() {
cout << "真实的请求" << endl;
}
};
//真实类
class RealClass :public Interface
{
public:
virtual void Request() {
cout << "真实请求" << endl;
}
};
//代理类
class ProxyClass :public Interface {
private:
RealClass* m_realClass;
public:
virtual void Request() {
m_realClass = new RealClass();
m_realClass->Request();
delete m_realClass;
}
};
int main()
{
ProxyClass *test = new ProxyClass();
test->Request();
getchar();
return 0;
}