欢迎来到天天文库
浏览记录
ID:43217776
大小:1.29 MB
页数:34页
时间:2019-10-03
《第16章 代理模式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第16章代理模式刘伟weiliu_china@yahoo.cn本章教学内容代理模式模式动机与定义模式结构与分析模式实例与解析模式效果与应用模式扩展代理模式模式动机在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用。代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。代理模式模式动机代理模式模式动机代理模式模式动机通过引入一个新的对象(如小图片和远程代理对象)来实现对真实对象的操作或者将新的对象作
2、为真实对象的一个替身,这种实现机制即为代理模式,通过引入代理对象来间接访问一个对象,这就是代理模式的模式动机。代理模式模式定义代理模式(ProxyPattern):给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式的英文叫做Proxy或Surrogate,它是一种对象结构型模式。代理模式模式定义ProxyPattern:Provideasurrogateorplaceholderforanotherobjecttocontrolaccesstoit.Frequencyofuse:mediumhigh代理模
3、式模式结构代理模式模式结构代理模式包含如下角色:Subject:抽象主题角色Proxy:代理主题角色RealSubject:真实主题角色代理模式模式分析代理模式示意结构图比较简单,一般可以简化为如下图所示,但是在现实中要复杂很多。代理模式模式分析典型的代理类实现代码:publicclassProxyimplementsSubject{privateRealSubjectrealSubject=newRealSubject();publicvoidpreRequest(){…...}publicvoidrequest(){
4、preRequest();realSubject.request();postRequest();}publicvoidpostRequest(){……}}代理模式代理模式实例与解析实例一:论坛权限控制代理在一个论坛中已注册用户和游客的权限不同,已注册的用户拥有发帖、修改自己的注册信息、修改自己的帖子等功能;而游客只能看到别人发的帖子,没有其他权限。使用代理模式来设计该权限管理模块。在本实例中我们使用代理模式中的保护代理,该代理用于控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限。代理模式代理模式实例与解析实
5、例一:论坛权限控制代理代理模式代理模式实例与解析实例一:论坛权限控制代理参考代码(Chapter16Proxysample01)演示……代理模式代理模式实例与解析实例二:数学运算代理模拟应用远程代理来访问另外一个应用程序域中的对象,如果在远程实现了加减乘除等运算,在本地需要调用,那么可以考虑在本地设置一个代理。代理模式代理模式实例与解析实例二:数学运算代理代理模式模式优缺点代理模式的优点代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。远程代理使得客户端可以访问在远程机器上的对象,远程机器可能具有更好的
6、计算性能与处理速度,可以快速响应并处理客户端请求。虚拟代理通过使用一个小对象来代表一个大对象,可以减少系统资源的消耗,对系统进行优化并提高运行速度。保护代理可以控制对真实对象的使用权限。代理模式模式优缺点代理模式的缺点由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。实现代理模式需要额外的工作,有些代理模式的实现非常复杂。代理模式模式适用环境根据代理模式的使用目的,常见的代理模式有以下几种类型:远程(Remote)代理:为一个位于不同的地址空间的对象提供一个本地的代理对象,这个
7、不同的地址空间可以是在同一台主机中,也可是在另一台主机中,远程代理又叫做大使(Ambassador)。虚拟(Virtual)代理:如果需要创建一个资源消耗较大的对象,先创建一个消耗相对较小的对象来表示,真实对象只在需要时才会被真正创建。Copy-on-Write代理:它是虚拟代理的一种,把复制(克隆)操作延迟到只有在客户端真正需要时才执行。一般来说,对象的深克隆是一个开销较大的操作,Copy-on-Write代理可以让这个操作延迟,只有对象被用到的时候才被克隆。代理模式模式适用环境根据代理模式的使用目的,代理模式有以下几
8、种类型(续):保护(ProtectorAccess)代理:控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限。缓冲(Cache)代理:为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。防火墙(Firewall)代理:保护目标不让恶意用户接近。同步化(Synchronization)代
此文档下载收益归作者所有