使用场合举例:
如果需要委托类处理某一业务,那么我们就可以先在代理类中统一处理然后在调用具体实现类
按照代理的创建时期,代理类可以分为两种:
1.静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。
如常用的接口实现就是用的Impl.class
2.动态:在程序运行时运用反射机制动态创建而成。
分为jdk动态代理和cglib动态代理:
jdk用的是invokehandler,但必须声明接口才能使用,而cglib通过封装接口工具类实现了不需要声明接口即可使用的特性