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;
}