设计模式 - 代理模式
定义
Provide a surrogate or placeholder for another object to control access to it.
UML
实例
Web Service,多图片滑动加载虚拟代理,快捷方式,
- 延迟初始化(虚拟代理)。偶尔使用的重量级服务对象。
- 访问控制(保护代理)。特定客户端使用服务对象。
- 本地执行远程服务(远程代理)。执行远程服务器上的服务对象。
- 纪录日志请求(日志纪录代理)。保存服务对象的请求历史纪录。
- 缓存请求结果(缓存代理)。请求返回结果的体积非常大时,缓存客户端请求结果并对缓存生命周期进行管理
- 智能引用。客户端不再使用某个重量级对象时立即销毁该对象。
比较
比较 | 代理模式 | 备注 |
---|---|---|
适配器模式 | 代理为对象提供相同的接口 | 适配器为对象提供不同的接口 |
外观模式 | 代理缓存了一个复杂实体并自行对其进行初始化。代理与其服务对象遵循同一接口,自己和服务对象可以互换 | 外观提供了新接口,与服务对象不能互换 |
装饰者模式 | 代理和装饰者都基于组合原则,一个对象将部分工作委派给另外一个对象。代理通常自行管理其服务对象的生命周期 | 装饰者为对象提供加强的接口,装饰者的生成由客户端进行控制 |