代理模式简要介绍.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
描述: 让我们思考一下下面的代码: //Client 1. class Customer{ 2. public void someMethod(){ 3. //Create the Service Provider Instance 4. FileUtil futilObj= new FileUtil(); 5. //Access the Service 6. futilObj.writeToFile( “ Some Data”); 7. } 8. } 作为它实现的一部分, Customer 类创建了一个 FileUtil 类的一个实例 并且直接访问它的服务。换句话说,对于客户对象,访问 FileUtil 对象的方式 是很直接的。它的实现可能是客户对象访问服务提供者对象最为普通的方式了。 相比较,有些时候客户对象可能不直接访问服务提供者(也就是指目标对象), 这种情况是由于下面的原因导致的: ( 1) 目标对象的位置 ??目标对象可能存在于同一台或者不同机器的不 同地址空间。 ( 2) 目标对象的存在形式 ??目标对象可能直到他被请求服务的时候还 不存在,或者对象被压缩。 ( 3) 特殊的行为 ??目标对象可以根据客户对象的访问权限接受或拒绝 服务。在多线程环境,一些服务提供者对象需要特殊的考虑。 在这些情况下,代理模式(Proxy Pattern )建议不要使有特殊需求的 客户对象直接访问目标对象,而是使用一个单独的(分离的)对象(也就是指代 理对象)为不同的客户提供通常的、直接的访问目标对象的方式。 代理对象提供和目标对象一样的接口。代理对象负责与目标对象交互的 细节,代表客户对象与目标对象交互。所以客户对象不再需要处理访问目标对象 的服务时的特殊需求。客户对象通过它的接口调用代理对象, 代理对象直接把这 些调用依次地传递给目标对象。客户对象不需要知道代理的原对象(目标对象)。 代理对象隐藏了与客户对象进行交互的对象细节, 女口:对象是否是远程的、是否 初始化、是否需要特殊的权限等。换句话说,代理对象作为客户和不可访问的远 程对象或推迟初始化对象之间的透明桥梁。 代理对象因使用的场景不同,代理的种类也不同。让我们来快速的浏览一 下一些代理和它们的目标。 注意:表23.1列出了不同种类的代理对象,在一章中,仅讨论远程代理,其他 的一些代理会在本书后面的模式中讨论。 Tflble 23.1: List of Ditto rent Proxy Types 基凭对庄不瓷茫址空匍丙远程弋恚旳计宅 止芝哇 先了提实貶幣三黑兰记咬■三垒写茅丟二2去,一巻?榛二枣嚨〒弍溟尋乏全 W男.兰宴W对醍诗求到—个捉诧廿?吃理不英要 熱 Ts P L- V 3 iff ft - 左乏一氓一産三莠乞亠了二7二W云芒二.壬匕三 £氓二塞力讣三有呂列吕丐F象. 不胃宮士活2不闫层:二工兰方讨盏巧上貶? 左创魅于理E?JfcXT一个祝罩三員艺?昼已 逮全咗覆工来”弓毛于W于理 的粤宦芜分.加果没有执巴右眩的权裁.客户对您不允许说叵痔定的方选?[ 椿常丁允许不同的窑空对金泰全的勻滂订瓷=于对盏科=縫. Slf “ A-I 三广亍亍巴弋第打=,三%.盍寻了一兰車丁吒电* Table 23.1: List of Differe nt Proxy Types 代理类型 目的 远程代理 提供对在不同地址空间的远程对象的访问 缓存代理 /服务代理 为了提供能够保存目标操作经常用到的结果,代理对象以存 储方式保存这些结果。当客户对象请求同一个操作时,代理不需要直接访问目标 对象,而是从存贮介质返回操作结果。 防火墙代理 使用防火墙代理主要是为了保护目标对象以防止有害客户 的访问。同时也可以防止客户访问有害的目标对象 保护代理 提供了不同客户访问不同层次的目标对象的功能。 在创建代理时, 定义了一个权限的集合。 虽后,这些权限用来限制访问代理的特 定部分,如果没有执行方法的权限,客户对象不允许访问特定的方法。 同步代理 计数代理 提供了允许不同的客户对象安全的同步访问目标对象的功能。 在执行目标对象的方法前,提供了一些审计机制。 代理模式和其他模式 从讨论不同的代理对象中可以看出:代理对象有两个主要的特征: (1) (2) 它介于客户对象和目标对象之间。 它接受客户对象的调用,然后转发调用给目标对象。 在这种情形下, 看上去和本书中前面讨论的其他模式有些相似。 让我们讨论一下 代理模式和一些与它相似的模式之间的相同点和不同点。 代理模式和装饰模式 代理模式: (1) (2) (3) 装饰模式: 客户对象不能直接访问目标对象 代理对象提供了对目标对象的访问控制(在保护代理中) 代理对象不能再增加其他的功能。 (1) (2) (3) 如果需要,客户对象不能直接访问目标对象。

文档评论(0)

youbika + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档