• 代理模式之静态代理


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

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

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

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

      静态代理

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

     

    运行结果:

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

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

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

    当然也有坏处:

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

  • 相关阅读:
    git相关整理
    cookie、sessionStorage和localStorage
    AJAX学习笔记
    json web token
    加密算法
    单点登陆
    给手机网络添加手动代理
    oracle数据库索引
    类加载器
    类加载过程
  • 原文地址:https://www.cnblogs.com/liumz0323/p/10328418.html
Copyright © 2020-2023  润新知