代理模式
什么是代理模式
为其他对象提供一种代理以控制对这个对象的访问
一个对象完成某项动作或任务,是通过对另一个对象的引用来完成的,这种模式叫代理模式
设计思想
- 使用一个额外的间接层来支持分散的、可控的、智能的访问
- 增加一个包装和委托来宝户真实的组件,以避免过度复杂
代理对象可以在客户端和目标兑现之间起到中间调和作用,并且可以通过代理对象隐藏不希望被客户看到的内容和服务,或者添加客户需要的额外服务
设计要点
代理模式中主要有三个角色,在设计代理模式时要找到并区分这些角色。
- 主题:定义操作、活动、任务的接口类
- 真实主题:真正完成操作、活动、任务的具体类
- 代理主题:代替真实主题完成操作、活动、任务的代理类
优缺点
优点: - 代理模式能够协调调用者和被调用者,在一定程度上降低系统耦合度
- 可以灵活地隐藏被代理对象地部分功能和服务,也可以增加额外地功能和服务
缺点:
- 由于客户端和真实主题间增加了代理对象,因此有些类型地代理模式可能会造成请求地处理速度变慢
- 实现代理模式需要额外地工作,有些代理模式地实现非常复杂
应用场景
- 不想或不能直接引用一个对象时
- 想对一个对象地功能进行加强时
- 各种特殊用途:远程代理、虚拟代理、保护代理、缓存代理、防火墙代理、同步化代理、智能引用代理。