1.结构
2.代理的种类(根据用途分类)
3.代理的优缺点
4.代理模式的实现
静态代理(针对每个真实主题需要人为创建一个代理类)
jdk动态代理(实质是生成一个实现我们传入的接口,并且继承Proxy的类,优点:针对某种功能的代理只需要实现一个InvocationHandler,然后在代码中动态的通过Proxy.newProxyInstance创建任何对象的代理对象,缺点:真实对象必须实现某个接口,并且只能代理接口中的方法)
--原理可见 https://www.cnblogs.com/MOBIN/p/5597215.html
--示例,ArrayList对象的代理对象的类结构为
public final class $Proxy0 extends Proxy
implements List, RandomAccess, Cloneable, Serializable
cglib动态代理(实质是继承我们传入的类,优点:针对某种功能的代理只需要实现一个MethodInterceptor,然后在代码中动态的通过Enhancer创建任何对象的代理对象,被代理的对象可以不需要实现接口,缺点:不能代理final类合final方法)
--原理可见
https://www.jianshu.com/p/9a61af393e41?from=timeline&isappinstalled=0
https://www.cnblogs.com/chinajava/p/5880887.html
--示例,
public class RealSubject$$EnhancerByCGLIB$$19e22f17 extends RealSubject
implements Factory