代理模式解读
2014-05-02 23:48
183 查看
代理模式(Proxy),专业的解释是,为其他的对象提供一种代理,以控制对这个对象的访问。
其实,更简单通俗点理解就是,当我访问这个对象之前,或者之后,我需要进行另外一个操作,那对于这个对象来说,进行这个操作的这个动作对外部(本对象以外的对象)是原子的操作,无法再拆分。那么,如何才能在这个操作之前和之后添加操作呢?毫无疑问,既然是无法拆分的原子操作,那么,要想在之前和之后进行访问的控制,就必须在进行这个操作之前或者之后添加对应的操作代码。
而作为一个代理,就是说对外来说,代理是需要能够进行所有的,他所代理的那个对象的操作的。从这一个层面上来说,只要是被代理对象上能够进行的操作,代理对象都能够进行,那么抽象到面向对象这个层面来说,就会是,代理对象要和被代理对象实现相同的接口,至少应该有相同的操作方法。这样的话,对外来说,代理对象和被代理对象就没有使用上的差别。
从另外一个层面上来说,代理是对被代理对象访问进行控制的,就有一个比较重要的点,代理对象必须要能知道他代理的是谁,那么,代理对象就必须有被代理对象的引用,只有代理对象能够识别被代理对象,才可能知道在他的某个操作前,或者操作后要进行某些访问控制。
综上所述,其实,代理就是间接地为用户提供某个功能的一种模式,这种模式的核心是对被代理对象的访问,以及在被代理对象访问的权限控制。
代理模式分以下几种使用场景:
1. 远程代理。
远程代理,是为在不同的地址空间的对象提供一个局部访问代表,这样可以隐藏存在于不同地址空间的对象的事实。
远程代理场景:如Webservice服务的发布和访问,当在一个WEB应用中引入Webservice服务的时候,需要在当前工程添加Webservice所需要的相关配置文件和jar包,而这些配置文件盒jar包中内容所做的事情就是代理的事情,他们为当前Web应用提供一个不同地址空间的远程访问代理,从而使得在当前容器中能够调用到远程的服务,但是,对于使用者来说,这样的调用方式是不可知的,使用者知道的只是在当前Web应用中的调用Webservice服务的接口,仅此而已。
2. 虚拟代理。
虚拟代理,是根据需要创建开销很大的对象,用于存储实例化需要很长时间的真实对象。
虚拟代理场景:互联网打开网络,会发现最初显示出来的是字,有很多的图片是没有加载的,需要一张一张下载才能显示出来,那些未打开的图片,就是通过虚拟代理来代替了真实的图片,此时真实代理存储了图片所对应的地址和尺寸。
3. 安全代理。
安全代理,用来控制真实对象的访问权限。
4. 智能指引,是指调用真实的对象时,代理处理另外一些事情。
其实,更简单通俗点理解就是,当我访问这个对象之前,或者之后,我需要进行另外一个操作,那对于这个对象来说,进行这个操作的这个动作对外部(本对象以外的对象)是原子的操作,无法再拆分。那么,如何才能在这个操作之前和之后添加操作呢?毫无疑问,既然是无法拆分的原子操作,那么,要想在之前和之后进行访问的控制,就必须在进行这个操作之前或者之后添加对应的操作代码。
而作为一个代理,就是说对外来说,代理是需要能够进行所有的,他所代理的那个对象的操作的。从这一个层面上来说,只要是被代理对象上能够进行的操作,代理对象都能够进行,那么抽象到面向对象这个层面来说,就会是,代理对象要和被代理对象实现相同的接口,至少应该有相同的操作方法。这样的话,对外来说,代理对象和被代理对象就没有使用上的差别。
从另外一个层面上来说,代理是对被代理对象访问进行控制的,就有一个比较重要的点,代理对象必须要能知道他代理的是谁,那么,代理对象就必须有被代理对象的引用,只有代理对象能够识别被代理对象,才可能知道在他的某个操作前,或者操作后要进行某些访问控制。
综上所述,其实,代理就是间接地为用户提供某个功能的一种模式,这种模式的核心是对被代理对象的访问,以及在被代理对象访问的权限控制。
代理模式分以下几种使用场景:
1. 远程代理。
远程代理,是为在不同的地址空间的对象提供一个局部访问代表,这样可以隐藏存在于不同地址空间的对象的事实。
远程代理场景:如Webservice服务的发布和访问,当在一个WEB应用中引入Webservice服务的时候,需要在当前工程添加Webservice所需要的相关配置文件和jar包,而这些配置文件盒jar包中内容所做的事情就是代理的事情,他们为当前Web应用提供一个不同地址空间的远程访问代理,从而使得在当前容器中能够调用到远程的服务,但是,对于使用者来说,这样的调用方式是不可知的,使用者知道的只是在当前Web应用中的调用Webservice服务的接口,仅此而已。
2. 虚拟代理。
虚拟代理,是根据需要创建开销很大的对象,用于存储实例化需要很长时间的真实对象。
虚拟代理场景:互联网打开网络,会发现最初显示出来的是字,有很多的图片是没有加载的,需要一张一张下载才能显示出来,那些未打开的图片,就是通过虚拟代理来代替了真实的图片,此时真实代理存储了图片所对应的地址和尺寸。
3. 安全代理。
安全代理,用来控制真实对象的访问权限。
4. 智能指引,是指调用真实的对象时,代理处理另外一些事情。
相关文章推荐
- android数据存储_SQL数据库
- paip.操作符重载的缺失 Java 的一个大缺点
- paip.操作符重载的缺失 Java 的一个大缺点
- 在Ubuntu 10.10下安装JDK配置Eclipse配置j2me
- unix网络编程1章-daytimetcpcli3.c客户端
- Ubuntu中看pdf乱码的问题
- PAT BASIC 1010
- 安卓学习140502:Android Activity和Intent机制学习笔记
- Object C学习笔记25-文件管理(一)
- eclipse将整个extjs文件加入后,将非常的卡。
- as中随机数的产生
- unix网络编程1章daytimetcpsrv.c服务器端
- Action script中的访问控制
- 栈的链式储存(不存在上溢)
- android数据存储_外部存储
- bzoj3211,bzoj3038
- JavaSE学习路线图
- 【DataStructure&AlgorithmInJava】Ch02-BinarySearchDemo
- 利用手机注册平台进行手机恶意攻击(成佩涛黑客)
- 二分排序之三行代码