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

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

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

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

马士兵的动态代理讲的非常透彻,你可以去下载这个视频去看一下,看完之后你对代理模式基本就理解透彻了,http://dl.vmall.com/c0s59fjkp8