代理模式
来源:互联网 发布:英国经济学博士知乎 编辑:程序博客网 时间:2024/06/06 02:21
1.定义
代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。
2.角色
(1)抽象角色(Subject):声明了目标对象和代理对象的共同接口
(2)代理角色(Proxy):代理对象内部含有目标对象的引用
(3)真实角色(RealSubject):定义了代理对象所代表的真实对象
3.应用形式
1) 远程代理(Remote Proxy):管理客户和远程对象之间的交互;
2) 虚拟代理(Virtual Proxy):控制访问实例化开销大的对象;
3) 保护代理(Protection Proxy):基于调用者控制对象方法的访问;
4) 智能指引(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作。
5) 写时拷贝(克隆)代理(Copy-on-write Proxy):其实是虚拟代理的一个分支,提供了拷贝大对象的时候只有在对象真正变化后才会进行拷贝(克隆)的操作,即延迟拷贝。
4.
public interface Subject {public void request();}
public class RealSubject implements Subject {@Overridepublic void request() {System.out.println("From real subject.");}}
public class Proxy implements Subject {private RealSubject realSubject;@Overridepublic void request() {System.out.println("before");if (realSubject == null) {realSubject = new RealSubject();}realSubject.request();System.out.println("after");}}
public class Client {public static void main(String[] args) {Subject subject = new Proxy();subject.request();}}5.区别
(1)
装饰者为对象增加行为
代理是控制对象的访问
(2)
适配器会改变对象适配的接口
代理则实现相同的接口
6.小结
1) 代理作为调用着和真实对象的中间层,降低了模块间和系统的耦合性;
2)可以以一个小对象代理一个大对象,达到优化系统提高运行速度的目的;
3)proxy并不一定要求保持接口的一致性,只要能够实现间接控制,有时候损及一些透明性是可以接受的。
0 0
- 代理模式--动态代理
- 代理模式-静态代理
- 代理模式-静态代理
- 代理模式 & 动态代理
- 代理模式--静态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-静态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式--静态代理
- 代理模式!
- 代理模式
- Matlab批量预处理图片(1)
- javaee之Spring的练习
- Ubuntu下修改键盘映射
- cout输出流的执行顺序
- Session实现原理
- 代理模式
- 适合python的编程题
- 104. Maximum Depth of Binary Tree
- 【工具】maven
- 51nod 1264 线段相交(计算几何)
- spark运行模式一些概念
- session工作原理
- DIY攒机
- IPv6地址解析之链路层地址学习