本人java还未入门者,看到java的反射这一块,里面介绍java的静态代理和动态代理,看的一知半解,有点没想明白的是,动态代理相对于静态代理到底有哪些优势,使用反射机制生成动态代理类,能实现的功能,用静态代理类也可以实现。动态代理不需要写代理类,但是需要写InvocationHandler类,以我的观点看,使用动态代理反而使代码更加难以理解。还请各位大侠给以指点,不胜感激!
2条回答 默认 最新
- Bo6Bear 2013-01-01 16:11关注
说一下我对这个问题的看法吧。
[b]代理应用的情况有以下几种:[/b]
[list]
[*] 访问控制
[*] 远程访问
[*] 加载开销比较大的资源(加载网络图片,视频等);
[/list]
[b]代理的实现方法:[/b]
[list]
[*]使用静态代理需要使代理类与被代理类继承继承相同的父类。在实现的时候偷梁换柱。
[*]使用动态代理需要写一个类似拦截器的东西。由于使用的是反射,理论上可以更加灵活,而且与具体的类没有强耦合。
[/list]
所以,在2种代理方式都能满足需求的情况下,静态代理能附加上一种简单,而动态代理会更加灵活。当你有多个类需要进行远程访问或者是需要加载资源等要使用代理,在这种情况下,如果使用静态代理的话要对每一个类写一个代理,而使用动态代理的话写一个就可以了。灵活的双胞胎兄弟是复杂,在没有搞清楚一种动态机制的时候就会有这种感觉。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历
- ¥15 TLE9879QXA40 电机驱动
- ¥20 对于工程问题的非线性数学模型进行线性化
- ¥15 Mirare PLUS 进行密钥认证?(详解)
- ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
- ¥20 想用ollama做一个自己的AI数据库
- ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
- ¥15 请问怎么才能复现这样的图呀