周华辉 2013-01-01 09:00
浏览 321
已采纳

关于java中的静态代理和动态代理的疑问

本人java还未入门者,看到java的反射这一块,里面介绍java的静态代理和动态代理,看的一知半解,有点没想明白的是,动态代理相对于静态代理到底有哪些优势,使用反射机制生成动态代理类,能实现的功能,用静态代理类也可以实现。动态代理不需要写代理类,但是需要写InvocationHandler类,以我的观点看,使用动态代理反而使代码更加难以理解。还请各位大侠给以指点,不胜感激!

  • 写回答

2条回答 默认 最新

  • Bo6Bear 2013-01-01 16:11
    关注

    说一下我对这个问题的看法吧。
    [b]代理应用的情况有以下几种:[/b]
    [list]
    [*] 访问控制
    [*] 远程访问
    [*] 加载开销比较大的资源(加载网络图片,视频等);
    [/list]
    [b]代理的实现方法:[/b]
    [list]
    [*]使用静态代理需要使代理类与被代理类继承继承相同的父类。在实现的时候偷梁换柱。
    [*]使用动态代理需要写一个类似拦截器的东西。由于使用的是反射,理论上可以更加灵活,而且与具体的类没有强耦合。
    [/list]
    所以,在2种代理方式都能满足需求的情况下,静态代理能附加上一种简单,而动态代理会更加灵活。当你有多个类需要进行远程访问或者是需要加载资源等要使用代理,在这种情况下,如果使用静态代理的话要对每一个类写一个代理,而使用动态代理的话写一个就可以了。

    灵活的双胞胎兄弟是复杂,在没有搞清楚一种动态机制的时候就会有这种感觉。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)