周华辉 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 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀