总第61篇
在某些情况下,一个客户不想或才不能直接引用一个对象,此时可以通过找”代理人“的方式来实现间接引用,这种方式在程序设计中也非常常见,这就是我们称之为的代理模式
。本篇将详细梳理代理模式。
1.代理模式的概念
代理模式(Proxy Pattern)也称作委托模式,其定义为:为某个对象提供一种代理,并由这个代理对象控制对原对象的访问。许多其它的模式,如状态模式、策略模式、访问者模式,在本质上是更特殊场合采用了委托模式。
代理模式的类图关系如下图所示:
![v2-56c00a1f32353b643f507766e70aa5a1_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/931a3debb52173773f787bc67cf36157.png)
从上图中,我们可以看出代理模式有三个关键的角色定义:
Subject
:抽象主题角色。是定义”操作/行为“的接口类;RealSubject
:具体主题角色。是被代理角色,是业务逻辑的具体执行者;ProxySubject
:代理主题角色。是代理角色,它负责真实角色的委托处理,并在处理前后做预处理和善后处理工作。
代理模式的优点主要体现在以下两个方面:
- 职责清晰。代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度