代理模式Proxy pattern
定义:代理模式是构造型的设计模式之一,它可以为其他对象提供一种代理Proxy以控制对这个对象的访问。
所谓代理,是指具有与代理元(被代理对象)具体相同的接口类的类,客户端必须通过代理与被代理的目标类型交互,而代理一般在交互的过程中,进行某些特别的处理。
代理模式的类结构图:
代理模式的角色:
Subject(抽象主题角色):真实主题与代理主题的共同接口。
RealSubject(真实主题角色):定义了代理角色所代表的真实对象。
Proxy(代理主题角色):含有对真实主题角色的引用,代理角色通常在将客户端调用传递给真实主题对象之前或之后执行某些操作,而不是单纯返回真实对象。
兑现代码:
#include <iostream>
using namespace std;
class Subject
{
public:
virtual void sailBook()=0;
};
class RealSubjectBook:public Subject
{
public:
void sailBook()
{
cout<<"sail book"<<endl;
}
};
class dangdangProxy:public Subject
{
public:
void sailBook()
{
RealSubjectBook *rsb = new RealSubjectBook;
rsb->sailBook();
cout<<"sail book"<<endl;
dazhe();
}
public:
void dazhe()
{
cout<<"双十一打折"<<endl;
}
private:
Subject *m_subject;
};
int main()
{
Subject * s = new dangdangProxy;
s->sailBook();
delete s;
getchar();
return 0;
}