zoukankan      html  css  js  c++  java
  • 《大话设计模式》读书笔记四——代理模式

          在这章中,作者用了gg1代替gg2追mm最终gg1抱得美人归的故事来开讲代理模式,怎么看都觉得别扭。

          代理模式(Proxy),为其他对象提供了一种代理以控制对这个对象的访问。


                                   代理模式结构图

         这是代理模式的定义,这里面的“其他对象”应该指的是和代理有相同接口的真实对象,也就是结构图中的RealSubject.
        光看结构图,让我感觉代理这个东西是画蛇添足了,因为它实现的功能都是RealSubject能实现的功能,而且它还必须依附于RealSubject(Proxy保存了RealSubject的引用),再往下了解,书中说代理模式有以下几个用处:
        (1)远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
        (2)虚拟代理,它是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象,以达到性能的最大优化。
        (3)安全代理,用来控制真实对象访问时的权限。
        (4)智能指引,是指当调用真实对象时,代理处理另外一些事。
         下面我来说我对代理四种用处的理解。
         远程代理,这种应用书中举例是WebService,在不同应用程序项目,可以使用代理来解决远程访问的问题。
         虚拟代理,书中用的浏览器加载图片的例子。个人觉得这个例子不太能让人理解这里说的虚拟代理。结合代理模式的结构图和虚拟代理的概念,我理解为有些对象实例化时开销很大,那么就创建它的代理,用代理去替换真实对象,而且在调用代理上真实对象的某个方法时,才会去实例化真实的对象,但这个时候代理已经存在了。
         安全代理,我的理解是用代理来控制真实对象不同的访问权限,即代理只实现了真实对象的部分方法。
         智能指引,光是看这个“智能指引”恐怕很难理解真正的用处是什么,这个应用指的是在代理中调用真实对象,但代理同时也处理另外一些事,比如计算真实对象应用的次数等。

    下面是代理模式的代码

    Code


     

    作者:边写边唱

    文章出处:http://www.cnblogs.com/zoupeiyang

    专注于用自助终端技术实现互联网+,有兴趣朋友欢迎关注   捷思科技

  • 相关阅读:
    Oracle函数如何把符串装换为小写的格式
    Oralce中的synonym同义词
    JS中getYear()的兼容问题
    How to do SSH Tunneling (Port Forwarding)
    所谓深度链接(Deep linking)
    upload size of asp.net
    发一个自动刷网站PV流量的小工具
    解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示"The operation could not be completed." 的问题。
    在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录
    使用SQL语句获取Sql Server数据库的版本
  • 原文地址:https://www.cnblogs.com/zoupeiyang/p/1489333.html
Copyright © 2011-2022 走看看