1、代理模式的UML类图
2、UML类图详解
--Subject类:定义了RealSubject和Proxy的代理接口(也就是请求request函数的接口)
--RealSubject类:定义了代理索要代理的真实实体,实际的请求(即request函数)在该类中实现
--Proxy类:在private下保存一个RealSubject的指针或引用,并提供一个request函数,其实际功能是代理实现真实实体的request函数。
3、使用场合
--远程代理:为一个对象在不同的地址空间提供局部代表,可以隐藏一个对象存在于不同地址空间的事实
--虚拟代理:根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象
--安全代理:用来控制真实对象访问时的权限
--智能指引:当调用真实的对象时,代理处理另外一些事
4、C++实现
#include<iostream>
#include<string>
using namespace std;
class Cilent {
public:
Cilent(string name):m_sName(name){}
private:
string m_sName;
};
class Subject {
public:
virtual void request() = 0;
};
class RealSubject :public Subject {
public:
RealSubject(Cilent *pCilent)
{
m_pCilent = pCilent;
}
virtual void request()
{
cout << "RealSubject的请求" << endl;
}
private:
Cilent *m_pCilent;
};
class Proxy :public Subject {
public:
Proxy(Cilent *pCilent)
{
m_pRealSubject = new RealSubject(pCilent);
}
virtual void request()
{
m_pRealSubject->request();
}
private:
RealSubject *m_pRealSubject;
};
int main()
{
Cilent* pCilent = new Cilent("李娇娇");
Proxy *pProxy = new Proxy(pCilent);
pProxy->request();
system("pause");
return 0;
}