// 所有原创文章转载请注明作者及链接
// blackboycpp(AT)gmail.com
// QQ群: 135202158
类图:
代码实现:
类声明:
#ifndef __PROXY_H__
#define __PROXY_H__
namespace blackboycpp
{
class Subject
{
public:
virtual void Request() = 0;
};
class RealSubject : public Subject
{
public:
virtual void Request();
};
//////////////////////////////////////////////////////////////////////////
class Proxy : public Subject
{
public:
Proxy();
~Proxy();
virtual void Request();
private:
RealSubject* _realSubject;
};
}
#endif
类实现:
namespace blackboycpp
{
void RealSubject::Request()
{
std::cout << "RealSubject::Request()/n";
}
Proxy::Proxy()
{
_realSubject = 0;
}
Proxy::~Proxy()
{
if(_realSubject){
delete _realSubject;
}
}
void Proxy::Request()
{
std::cout << "Proxy::Request()/n";
if(_realSubject == 0){
_realSubject = new RealSubject;
}
_realSubject->Request();
}
}
main():
int main(int argc, char** argv)
{
Proxy* proxy = new Proxy;
proxy->Request();
delete proxy;
system("pause");
return 0;
}