代理模式:就是在不修改目标对象的基础上使用代理对象增加目标对象功能的。

根据代理对象与目标对象之间的 关系,代理关系产生的时机可以分为二类:静态代理与动态代理

静态代理:在程序运行前,代理类与目标类之间的代理关系就已经确立了,从代码上看:有代理类的才是静态代理,比如公司与法律顾问

动态代理:程序运行时才产生代理关系,从代码上看:没有代理类,只有代理对象的才是动态代理(代理对象是有代理工厂或者代理工具生成的),比如个人与律师

动态代理分jdk的动态代理和CGLIB动态代理

jdk的动态代理与cglib动态代理的区别:

jdk的动态代理解决的问题是目标对象实现了某个接口,如果目标对象没有实现接口,jdk的动态代理就无法解决。

cglib动态代理解决的问题是目标类没有实现的接口,我们要生成代理对象的问题