代理模式
代理模式是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
#pragma once
#include <iostream>
#define SAFE_DELETE(ptr) if(ptr!=NULL){delete ptr; ptr = NULL;}
using namespace std;
//抽象接口
class Subject
{
public:
virtual void Request() = 0;
};
//具体游戏开发商
class RealSubject : public Subject
{
public:
virtual void Request() { cout << "次时代游戏" << endl; }
};
//代理商
class Proxy : public Subject
{
public:
Proxy():proxy(0){}
~Proxy()
{
SAFE_DELETE(proxy)
}
virtual void Request()
{
cout << "代理商代理游戏:" << endl;
if (NULL == proxy)
proxy = new RealSubject;
proxy->Request();
}
private:
RealSubject* proxy;
};
int main()
{
Proxy* proxy = new Proxy;
proxy->Request();
return 0;
}
优点
代理者就像是中间商,起到了保护被代理者的作用;