//Proxy模式
class Subject
{
public:
Subject(){}
virtual ~Subject(){}
virtual void Request() = 0;
};
// 真正使用的实体
class ConcreteSubject: public Subject
{
public:
ConcreteSubject(){};
virtual ~ConcreteSubject(){}
virtual void Request(){printf("this is a ConcreteSubject!\n");}
};
class Proxy: public Subject
{
public:
Proxy(){if(!m_pRealSubject){m_pRealSubject=new ConcreteSubject;}}
virtual ~Proxy(){}
virtual void Request(){m_pRealSubject->Request();}
private:
ConcreteSubject* m_pRealSubject;
};
//Proxy模式
int _tmain(int argc, _TCHAR* argv[])
{
//Proxy模式
Subject *pSubject=new Proxy;
pSubject->Request();
delete pSubject;
//Proxy模式
getchar();
return 0;
}
转载于:https://my.oschina.net/u/221120/blog/890159