zoukankan      html  css  js  c++  java
  • 代理模式之静态代理

      由于前几天做生成文档的功能大量用到了反射机制,所以我闲时看了一下java反射机制的原理,发现里面大量使用了代理模式(java方法的method.invoke()代理native方法的method.invoke,不在此文章展开),由于对代理模式有点陌生了。写这篇文章重新加深一下我对代理模式的理解。

      代理模式顾名思义就是,找一个代理人帮你做事。比如B是买房者,要买房必须要经过中介A代理买房,因为B没有联系房东的方式。这里有三个角色,一个是代理对象即A,一个是目标对象B,第三个是A和B的抽象接口对象C。

    代理模式分为静态代理和动态代理,以下讲静态代理。下一篇文章讲动态代理

    静态代理:代码编译时就确定了被代理的类是哪一个;

      静态代理

    下面写一个例子来实现静态代理。

     

    运行结果:

    可以看到A作为代理对象,可以增强B的接口方法的功能。

    由此知道代理模式的好处是:

    在不修改目标对象的功能前提下,对目标功能扩展和增强 ,对目标功能增加拦截。比如中介增强了买房人的买房功能,明星经纪人帮明星拦截了狗仔。

    当然也有坏处:

    比如这种代理模式属于静态代理。每次有目标对象,都得增加一个代理对象。而且接口的功能如果要改变的话,目标和代理对象都得改,十分不方便。

  • 相关阅读:
    loj 6035 「雅礼集训 2017 Day4」洗衣服
    BZOJ 3251 树上三角形
    UwrhrQNgRh
    百度之星2018资格赛1002题解
    [CF-676B]PYRAMID OF GLASSES
    【CF-371C】Hamburgers
    洛谷P1012拼数——字符串排序
    位运算详解及应用
    NOIP 2014 Day2 T1 无线网络发射器
    写代码要注意的几点(2)
  • 原文地址:https://www.cnblogs.com/liumz0323/p/10328418.html
Copyright © 2011-2022 走看看