本人java还未入门者,看到java的反射这一块,里面介绍java的静态代理和动态代理,看的一知半解,有点没想明白的是,动态代理相对于静态代理到底有哪些优势,使用反射机制生成动态代理类,能实现的功能,用静态代理类也可以实现。动态代理不需要写代理类,但是需要写InvocationHandler类,以我的观点看,使用动态代理反而使代码更加难以理解。还请各位大侠给以指点,不胜感激!
2条回答 默认 最新
- Bo6Bear 2013-01-01 16:11关注
说一下我对这个问题的看法吧。
[b]代理应用的情况有以下几种:[/b]
[list]
[*] 访问控制
[*] 远程访问
[*] 加载开销比较大的资源(加载网络图片,视频等);
[/list]
[b]代理的实现方法:[/b]
[list]
[*]使用静态代理需要使代理类与被代理类继承继承相同的父类。在实现的时候偷梁换柱。
[*]使用动态代理需要写一个类似拦截器的东西。由于使用的是反射,理论上可以更加灵活,而且与具体的类没有强耦合。
[/list]
所以,在2种代理方式都能满足需求的情况下,静态代理能附加上一种简单,而动态代理会更加灵活。当你有多个类需要进行远程访问或者是需要加载资源等要使用代理,在这种情况下,如果使用静态代理的话要对每一个类写一个代理,而使用动态代理的话写一个就可以了。灵活的双胞胎兄弟是复杂,在没有搞清楚一种动态机制的时候就会有这种感觉。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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 火焰左右视图、视差(基于双目相机)