代理模式简要介绍

代理模式简要介绍

ID:45537337

大小:234.50 KB

页数:13页

时间:2019-11-14

代理模式简要介绍_第1页
代理模式简要介绍_第2页
代理模式简要介绍_第3页
代理模式简要介绍_第4页
代理模式简要介绍_第5页
资源描述:

《代理模式简要介绍》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、描述: 让我们思考一下下面的代码:     //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类创建了一个FileU

2、til类的一个实例并且直接访问它的服务。换句话说,对于客户对象,访问FileUtil对象的方式是很直接的。它的实现可能是客户对象访问服务提供者对象最为普通的方式了。相比较,有些时候客户对象可能不直接访问服务提供者(也就是指目标对象),这种情况是由于下面的原因导致的: (1)    目标对象的位置??目标对象可能存在于同一台或者不同机器的不同地址空间。 (2)    目标对象的存在形式??目标对象可能直到他被请求服务的时候还不存在,或者对象被压缩。 (3)    特殊的行为??目标对象可以根据客户对象的访问权限接受或拒绝服务。在多线程环境,一些服务提供者对

3、象需要特殊的考虑。     在这些情况下,代理模式(Proxy Pattern)建议不要使有特殊需求的客户对象直接访问目标对象,而是使用一个单独的(分离的)对象(也就是指代理对象)为不同的客户提供通常的、直接的访问目标对象的方式。     代理对象提供和目标对象一样的接口。代理对象负责与目标对象交互的细节,代表客户对象与目标对象交互。所以客户对象不再需要处理访问目标对象的服务时的特殊需求。客户对象通过它的接口调用代理对象,代理对象直接把这些调用依次地传递给目标对象。客户对象不需要知道代理的原对象(目标对象)。代理对象隐藏了与客户对象进行交互的对象细节,如

4、:对象是否是远程的、是否初始化、是否需要特殊的权限等。换句话说,代理对象作为客户和不可访问的远程对象或推迟初始化对象之间的透明桥梁。    代理对象因使用的场景不同,代理的种类也不同。让我们来快速的浏览一下一些代理和它们的目标。 注意:表23.1列出了不同种类的代理对象,在一章中,仅讨论远程代理,其他的一些代理会在本书后面的模式中讨论。 Table 23.1: List of Different Proxy Types  代理类型     目的  远程代理    提供对在不同地址空间的远程对象的访问 缓存代理 /服务代理    为了提供能够

5、保存目标操作经常用到的结果,代理对象以存储方式保存这些结果。当客户对象请求同一个操作时,代理不需要直接访问目标对象,而是从存贮介质返回操作结果。 防火墙代理    使用防火墙代理主要是为了保护目标对象以防止有害客户的访问。同时也可以防止客户访问有害的目标对象。 保护代理    提供了不同客户访问不同层次的目标对象的功能。 在创建代理时,定义了一个权限的集合。虽后,这些权限用来限制访问代理的特定部分,如果没有执行方法的权限,客户对象不允许访问特定的方法。 同步代理    提供了允许不同的客户对象安全的同步访问目标对象的功能。 计数代理    在执行目标对象

6、的方法前,提供了一些审计机制。 代理模式和其他模式 从讨论不同的代理对象中可以看出:代理对象有两个主要的特征: (1)    它介于客户对象和目标对象之间。 (2)    它接受客户对象的调用,然后转发调用给目标对象。 在这种情形下,看上去和本书中前面讨论的其他模式有些相似。让我们讨论一下代理模式和一些与它相似的模式之间的相同点和不同点。代理模式和装饰模式: 代理模式: (1)    客户对象不能直接访问目标对象 (2)    代理对象提供了对目标对象的访问控制(在保护代理中) (3)    代理对象不能再增加其他的功能。 装饰模式: (1)    如果

7、需要,客户对象不能直接访问目标对象。 (2)    装饰对象不能控制对目标对象的访问。 (3)    装饰对象可以增加额外的功能。代理模式和外观模式: 代理模式: (1)    代理对象代表一个单一对象。 (2)    客户对象不能直接访问目标对象。 (3)    代理对象提供了对于单一目标对象的访问控制。 外观模式: (1)    外观对象代表了对象的一个子系统。 (2)    如果必要,客户对象可以直接访问子系统中的对象。 (3)    一个外观对象提供了一个对子系统组件的简单的、高层次的接口.代理模式和责任链模式: 代理模式: (1)    代理对

8、象代表了一个单一的对象。 (2)    克辉请求首先被代理对象所接受,但是不直接

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。