[设计模式]结构模式-代理模式(C++描述)
second60 20180504
1. 什么是代理模式
代理模式,从字面上就可以这样理解,我想做某件事,但我不是直接找做事的人,而是找代理,代理再帮我找人做。
代理模式:为其他对象提供一种代理以控制对这个对象的访部。
2. 代理模式结构图
分析:
抽象角色:通过接口或抽象类声明真实角色实现的业务方法。
代理角色:实现抽象类,是真实角色的代理
真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑。
代码:
// 抽象角色
class Subject
{
public:
virtual ~Subject(){};
virtual void Request(){};
};
// 真实角色
class ConcreteSubject: public Subject
{
public:
void Request(){};
};
// 代理类
class Proxy: public Subject
{
public:
Proxy(Subject* subject){_subject = subject;}
void Request(){_subject->Request();}
private:
Subject* _subject;
};
2.1 优点
1. 职责清晰,真实角色只实现实际业务逻辑,不用关心其他职责
2. 代理对象起到中介作用
3. 高扩展,新加一个实现类,无须改变代理
2.2 缺点
1. 在真实角色和客户之间加了代码,可能会使请求效率变慢
2. 实现代理模式需要额外的工作,有些代理很复杂
3 代理模式使用场景
1.远程代理。
2.虚拟代理。
3.Copy-on-Write 代理。
4.保护(Protect or Access)代理。
5.Cache代理。
6.防火墙(Firewall)代理。
7.同步化(Synchronization)代理。
8.智能引用(Smart Reference)代理。
4 总结
代理在客户和目标对象间起到一个中介的作用,可以通过代理,忽略客户不关心的内容和服务,或为客户添加额外的服务。
代理的原理,在很多系统中都有用到,其中原理是类似的,目的都是为了起到一个中介代理的作用。
5 闲语
今天跑步突破了自已的历史记录,11.08公里,用时1小时11分。有点困了,坚持到胜利的彼岸。相信自已,超越自已。