28.代理模式(proxy pattern)

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

猜你喜欢

转载自www.cnblogs.com/freelymen/p/9965491.html