设计模式_代理模式.pptVIP

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计模式--工厂模式 设计模式 ——代理模式(Proxy Pattern) 东方神码 软件设计部 杜星辰 DesignPattern Proxy Proxy Definition and Uses Sample of Proxy OO Principle of Proxy Differences Some Questions Proxy Definition and Uses DesignPattern Proxy Proxy Definition and Uses Sample of Proxy OO Principle of Proxy Differences Some Questions CEO看过以后,提出了意见:“现在已经是网络时代了,我想要的是远程监控”; 项目组分析以后,得出以下结论: 开始编码之前,要进行全面的需求分析。 代码已经写好,我们想要做最少的改变。 我们可以不改变GumballMonitor,不将GumballMachine交给GumballMonitor ,而是将一个远程代理交给它;利用这个远程代理对象来和它进行沟通。 需要继承Remote接口 RMI提供了客户辅助对象和服务辅助对象 客户辅助对象称为stub 服务辅助对象称为skeleton RMI好处是不用写网络或IO代码 客户调用远程方法,就和在本地虚拟机上调用一样 利用JDK中rmic产生辅助类 注意服务要通过RMI registry注册 现在,我们对GumballMachine重构 1.定义远程接口 2.把没有序列化的类序列化 3. GumballMachine需继承GumballMachineRemote 4. RMI registry注册 虚拟代理做为开销大对象的代表。虚拟代理经常在我们真正需要一个对象时候才 创建它,当对象在创建前及创建中,由代理来扮演对象的替身,对象创建后,代 理会将请求直接委托给对象 在程序加载一些大的对象,比如图片,会显示“正在加载中……” ,一旦加载完 成,刚才显示内容就不见了,图片被显示出来,我们可以用虚代理来实现类似的 功能。 类图: 代理类的主要实现: 保护代理主要用在不同级别的用户对同一对象拥有不同的访问权利 如著名的Jive论坛系统中, 就使用Proxy进行授权机制控制,访问论坛系统的用户 有多种类型:注册普通用户 论坛管理者 系统管理者,只有管理员可以创建论坛。 看到上面的例子大家都有些疑惑,既然代理类在起作用,那么原始类不是就没有 用了? 代理主要在重构时候适用,比如上面我们举的Jive论坛的例子,实际上源程序代 理类ForumFactoryProxy直接继承的虚基类FroumFactory。 那么代理真正的用处在哪? 别着急,下面我们引出来另外一个重要的概念:动态代理 Java在java.lang.reflect包中有自己的代理类支持(JDK1.3),利用这个包你可以运 行时动态地创建一个代理类,实现一个或多个接口,并讲方法的调用转发到你所 制定的类。因为实际的类是在运行时创建的,因此称这个技术为动态代理 为令一个对象提供一个替身或占位符,以控制对这个对象的访问 1) 远程代理(Remote Proxy )为一个对象在不同的地址空间提供局部代表对象。 这个不同的地址空间可以是本机,也可以是其它机器。 优点是可以将网络的细节隐藏起来,使客户不用考虑到网络的存在,代理承担了网络通信工作 缺点是客户可能没有意识到是会启动一个耗费时间的远程调用,因此会产生一些问题。 2 )虚代理(Virtual Proxy )根据需要创建开销很大的对象,使得此对象只有在需要时才创建。在动机一节描述的ImageProxy就是这样一种代理的例子。 优点是使用虚拟代理可以在加载的时候进行必要的优化,当一个模块加载十分耗费资源的时候,虚拟代理的优势就非常明显。 Copy-On-Write代理:虚拟代理的一种,把复制拖延到只要客户端需要时,才真正采取行动。 3) 保护代理(Protection Proxy )控制对原始对象的访问。如果需要,可以给不同的用户不同的权限。 Cach代理:为某一目标操作的结果提供临时存储空间,使多个客户端可以共享这些成果。 防火墙(FireWall)代理:保护目标,不让恶意用户接近。 同步化代理(Synchronization):使几个用户使用同一个对象而没有冲突。 4 )智能引用(Smart Reference )它在访问对象时执行一些附加操作。 它的典型用途包括:

文档评论(0)

wxc6688 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档