GreensnoWorld
记录点滴,分享乐趣,一块凝固的时间
2011.代理模式
设计模式  2023年9月22日
#include <iostream>
using namespace std;

#define SAFE_DELETE(p) if(p){delete p; p=NULL;}

class CSubject
{
public:
	CSubject(){}
	virtual ~CSubject(){}

	virtual void Request() = 0;
};

class CRealSubject: public CSubject
{
public:
	CRealSubject(){}
	~CRealSubject(){}

	void Request()
	{
		cout << "CRealSubject Request" << endl;
	}
};

class CProxy: public CSubject
{
public:
	CProxy(): m_pRealSubject(NULL) {}
	~CProxy()
	{
		SAFE_DELETE(m_pRealSubject);
	}

	void Request()
	{
		if(m_pRealSubject == NULL)
		{
			m_pRealSubject = new CRealSubject();
		}
		cout << "CProxy Request" << endl;
		m_pRealSubject->Request();
	}
private:
	CRealSubject *m_pRealSubject;
};

int main()
{
	CSubject *pSubject = new CProxy();
	pSubject->Request();
	SAFE_DELETE(pSubject);
}

 

LIJG
余本顽劣,生于紫云下,长于汝水滨。早年求学,兴趣广泛,好高骛远,学无所成,仓皇入世。兴趣所致,投身互联网,求知未证,而立已至,始悟光阴荏苒,终需务实钻研。故有此站,记录时光,积累点滴,验证所学,分享愚见。指舞方寸间,心系万千年。
留言