• 《大话设计模式》读书笔记四——代理模式


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

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


                                   代理模式结构图

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

    下面是代理模式的代码

    Code


     

    作者:边写边唱

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

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

  • 相关阅读:
    Luogu3119 [USACO15JAN]Grass Cownoisseur G
    BZOJ4361 isn
    洛谷1330 封锁阳光大学
    codechef AUG17 T2 Chef and Mover
    codechef AUG17 T1 Chef and Rainbow Array
    【bzoj3211】花神游历各国&&【bzoj3038】上帝造题的七分钟2
    noip 瑞士轮 ————归并排序解法
    记录string的妙用
    洛谷P1550 [USACO08OCT]打井Watering Hole
    汕头市队赛 SRM 09 C 撕书
  • 原文地址:https://www.cnblogs.com/zoupeiyang/p/1489333.html
Copyright © 2020-2023  润新知