代理模式
Provide a surrogate or placeholder for anther object to control access to it.(为其他对象提供一种代理以控制对这个对象的访问。)
UML类图
C++代码实现
#include <iostream>
using namespace std;
class Subject {
public:
virtual void Request() = 0;
};
class ConcreteSubject : public Subject {
public:
void Request() { cout << "执行调用 ---> Request()" << endl; }
};
class Proxy {
public:
Proxy(Subject* pSub): _pSub(pSub) { }
void Request() { _pSub->Request(); }
private:
Subject* _pSub;
};
#include "Proxy.h"
int main()
{
Subject *pSubject = new ConcreteSubject();
Proxy* pProxy = new Proxy(pSubject);
pProxy->Request();
delete pProxy;
delete pSubject;
return 0;
}Proxy 模式最大的好处就是实现了逻辑和实现的彻底解耦。
Proxy 模式的扩展:
普通代理:客户端只能访问代理角色,不能访问真实角色
强制代理:必须通过真实角色找到代理角色,否则不能访问
虚拟代理:在需要的时候才初始化主题对象
动态代理:AOP,参考Spring AOP。或者google JAVA实现动态代理
本文详细介绍了代理模式的概念,展示了如何在C++中实现这一模式,并阐述了其最大优势在于实现逻辑和实现的彻底解耦。进一步探讨了代理模式的扩展类型,包括普通代理、强制代理、虚拟代理和动态代理,并提供了相应的代码实现。

被折叠的 条评论
为什么被折叠?



