Proxy模式
一.意图
为其他对象提供一种代理以控制对这个对象的访问
二.适用性
在需要用比较通用和复杂的对象指针代替简单指针的时候,使用proxy模式。远程代理,虚代理,保护代理,只能指引
当第一次引用一个持久对象时,将它装入内存
在访问一个实际对象前,检查是否已经锁定了它,以确保其他对象不能改变它。
三.结构
四.代码
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<math.h>
usingnamespacestd;
//proxymode
//interface
classCSubject
{
public:
virtualvoidRequest()
{}
};
//realsubject
classCRealSubject:publicCSubject
{
public:
virtualvoidRequest()
{
cout<<"CRealSubject:Request-------"<<endl;
}
};
//proxy
classCProxy:publicCSubject
{
public:
CProxy()
{}
~CProxy()
{
if(m_pRealSubject!=NULL)
{
deletem_pRealSubject;
m_pRealSubject=NULL;
}
}
virtualvoidRequest()
{
if(m_pRealSubject==NULL)
{
m_pRealSubject=newCRealSubject();
}
m_pRealSubject->Request();
}
private:
CRealSubject*m_pRealSubject=NULL;
};
intmain()
{
cout<<"HelloWorld!"<<endl;
//实现
CProxyproxy;
//...
//...
//使用加载
proxy.Request();
return0;
}