




免费预览已结束,剩余29页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十六章,代理模式,刘_中国,本章的教学内容,代理模式的模式动机和定义模式结构,分析模式实例和分析模式效果以及应用模式的扩展,代理模式,模式动机在某些情况下,客户不希望或不能直接引用一个对象,这时,间接引用可以通过一个称为“代理”的第三方来实现。代理对象可以充当客户端和目标对象之间的中介,并且可以移除客户端无法看到的内容和服务,或者通过代理对象添加客户端需要的附加服务。代理模式、模式激励、代理模式、模式激励、代理模式、模式激励通过引入新的对象(例如小图片和远程代理对象)或把新的对象作为真实对象的身体替身来实现真实对象的操作。这种实现机制是代理模式,通过引入代理对象来间接访问对象,这是代理模式的模式动机。模式定义代理模式:为对象提供代理,代理对象控制对原始对象的引用。代理模式的英文名称是代理或代理,这是一种对象结构模式。代理模式,模式定义代理模式:提供代理主题角色代理主题角色真实主题角色真实主题角色,代理模式,模式分析代理模式示意结构图相对简单,一般可以简化如下图所示,但实际上要复杂得多。以下是本文主要内容的总结:1 .本文的主要内容如下:1 .本文的主要内容如下:1 .本文的主要内容如下:1 .然而,游客只能看到别人的帖子,没有其他权利。权限管理模块采用代理模式设计。在本例中,我们在代理模式下使用保护代理,它用于控制对对象的访问,并可以为不同的用户提供不同级别的权限。代理模式,代理模式实例和分析实例1:论坛权限控制代理,代理模式,代理模式实例和分析实例1:论坛权限控制代理参考代码(第16章代理样本01),演示.代理模式、代理模式实例和分析实例2:数学运算代理模拟远程代理的应用来访问另一个应用域中的对象。如果诸如加法、减法、乘法和除法之类的操作是远程实现的,并且需要在本地调用,那么可以认为代理是在本地设置的。代理模式、代理模式实例和分析示例2:数学运算代理、代理模式、代理模式的优缺点代理模式代理模式可以协调主叫和被叫,在一定程度上降低了系统的耦合度。远程代理使客户端能够访问远程机器上的对象,这可能具有更好的计算性能和处理速度,并且可以快速响应和处理客户端请求。虚拟代理通过用一个小对象来表示一个大对象,可以减少系统资源的消耗,优化系统,提高运行速度。保护代理可以控制真实对象的使用权。代理模式优点和缺点代理模式缺点由于在客户端和真实主题之间添加了代理对象,某些类型的代理模式可能会减慢请求的处理速度。代理模式的实现需要额外的工作,并且一些代理模式的实现非常复杂。根据使用代理模式的目的,常见的代理模式如下:远程代理:为位于不同地址空间的对象提供一个本地代理对象,该对象可能在同一台主机或另一台主机上,远程代理也称为大使。虚拟代理:如果您需要创建一个消耗更多资源的对象,首先创建一个消耗更少资源的对象来表示它。只有在需要的时候才会创建真实的对象。写时复制代理:它是一种虚拟代理,延迟复制(克隆)操作,直到客户端真正需要它。一般来说,对象的深度克隆是一项昂贵的操作。写入时复制代理可以延迟此操作,并且仅在使用对象时克隆对象。根据使用代理模式的目的,有几种类型的代理模式(续):保护访问代理:控制对对象的访问,它可以为不同的用户提供不同级别的权限。缓存代理:为目标操作的结果提供临时存储空间,以便多个客户端可以共享这些结果。防火墙代理:保护目标免受恶意用户的攻击。同步代理:允许几个用户同时使用一个对象而没有冲突。智能引用代理:当一个对象被引用时,它提供一些额外的操作,比如记录对象被调用的次数,等等。代理模式,模式应用程序(1)JavaMi(远程调用,远程方法调用)。(2)分布式技术,如2)EJB和网络服务都是代理模式的应用。EJB采用的是风险管理机制。远程服务器中的企业Bean在本地有一个存根代理。客户端通过存根调用远程对象中定义的方法,而不直接与远程对象交互。在EJB的使用中,需要提供一个通用的接口,并且这个接口的客户程序不知道存根和远程EJB的实现细节。(Spring框架中的AOP技术也是代理模式的应用,而动态代理技术在SpringAOP中得到应用。代理模式,mode扩展了几种常用的代理模式图片代理:代理模式的一个非常常见的应用示例是对大图浏览的控制。当用户通过浏览器访问网页时,不会首先加载真正的大图片,而是通过代理对象方法进行处理。在代理对象方法中,使用一个线程将小图片加载到客户端浏览器中,然后在后台使用另一个线程调用大图片加载方法将大图片加载到客户端。当你需要浏览一个大图片,然后在一个新的网页显示大图片。如果用户在浏览大图时没有完成加载工作,可以启动另一个线程来显示相应的提示信息。通过代理技术结合多线程编程,将真实图片加载到后台进行操作,不影响前台图片的浏览。代理模式扩展了几种常用的代理模式远程代理:远程代理可以隐藏网络的细节,这样客户端就不必考虑网络的存在。客户完全可以认为被代理的远程业务对象是本地的而不是远程的,而远程代理对象承担了大部分网络通信工作。代理模式扩展了几种常用的代理模式虚拟代理:当加载一个对象非常耗费资源时,虚拟代理的优势非常明显。虚拟代理模式是一种节省内存的技术。占用大量内存或处理复杂对象的对象只有在被使用时才会被创建。应用程序启动时,可以用代理对象代替真实对象进行初始化,节省了内存占用,大大加快了系统的启动时间。动态代理是一种相对先进的代理模式,它的典型应用是SpringAOP。在传统的代理模式中,客户端通过代理调用RealSubject类的request()方法,同时在代理类中封装其他方法(如preRequest()和postRequest()来处理其他一些问题。如果以这种方式使用代理模式,真实的主体角色必须预先存在,并作为代理对象的内部成员属性。如果一个真实的主题角色必须对应一个代理主题角色,这将导致系统中类的数量急剧增加,所以我们需要找到减少系统中类的数量的方法。此外,如何在事先不知道真实主题角色的情况下使用代理主题角色是动态代理需要解决的问题。与Java动态代理实现相关的类位于java.lang.reflect包中,主要涉及两个类:InvocationHandler接口。它是由代理实例的调用处理程序实现的接口。接口中定义了以下方法:PublicObjectInvoke(对象代理、方法方法、对象参数)到可抛出的;在invoke()方法中,第一个参数proxy表示代理类,第二个参数方法表示需要代理的方法,第三个参数args表示代理方法的参数数组。代理模式扩展了动态代理代理类。这个类是一个动态代理类。这个类中最常用的方法是:PublicsStationObjectNewProxyInstance(类装入器,类接口,invocationHandlerH)throwSillEgalAragEmentException。方法用于根据传入的接口类型接口返回动态创建的代理类的实例。在该方法中,第一参数加载器表示代理类的类加载器,第二参数接口表示由代理类实现的接口列表(与真实主题类的接口列表一致),第三参数H表示分配的调用处理程序类。代理模式,模式扩展动态代理参考代码(第16章代理动态代理),演示.本章总结了在代理模式下,需要为对象提供代理,而代理对象控制对原始对象的引用。代理模式的英文名称是代理或代理,这是一种对象结构模式。代理模式包括三个角色:抽象主题角色声明真实主题和代理主题之间的公共接口;代理主题角色包含对真实主题的引用,以便可以随时操作真实主题对象。真实主体角色定义了代理角色所代表的真实对象,并在真实主体角色中实现了真实的业务操作。客户端可以通过代理主体角色间接调用在真实主体角色中定义的方法。代理模式的优点是可以协调呼叫方和被叫方,在一定程度上降低系统的耦合度。缺点是因为在客户端和真实主题之间添加了代理对象,一些类型的代理模式可能会降低请求的处理速度,并且代理模式的实现需要额外的工作,并且一些代理模式的实现非常复杂。本章总结了远程代理为位于不同地址空间的对象提供了一个本地代表对象,这使客户端能够访问远程计算机上的对象。远程机器可以具有更好的计算性能和处理速度,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论