概念及作用
- 为另一个对象提供代理或占位符以控制对它的访问。
- 使用额外的间接级别来支持分布式,受控或智能访问。
- 添加包装器和委托以保护实际组件免受过度复杂的影响。
1 | 设计代理或代理对象:在客户端第一次发出代理请求时实例化真实对象,记住该真实对象的身份,并将发起请求转发给该真实对象。然后,所有后续请求都直接转发到封装的真实对象。 |
UML图
优缺点
优点
- 代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。
- 远程代理使得客户端可以访问在远程机器上的对象,远程机器可能具有更好的计算性能与处理速度,可以快速响应并处理客户端请求。
- 虚拟代理通过使用一个小对象来代表一个大对象,可以减少系统资源的消耗,对系统进行优化并提高运行速度。
- 保护代理可以控制对真实对象的使用权限。
缺点
- 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
- 实现代理模式需要额外的工作,有些代理模式的实现非常复杂
示例代码:
(一)
1 | // 5. To support plug-compatibility between |
(二)
1 | public interface Image { |
(三)
1 | """ |