代理模式
一. 静态代理 代理类和委托类都实现接口,但是代理类的方法的具体实现是在委托类中实现的,代理类仅仅是调用委托类的方法,并在委托类方法调用之前或者之后或者出现异常时添加一些额外的功能。客户类只需获得一个有代理类实现接口的对象,使用该对象中的方法即可。 二. JDK动态代理 使用方式: Java在java.lang.reflect.proxy下实现了代理类。 首先委托类实现接口中的方法,然后需要定义一个类MyClass实现了InteceptorHandler接口,该接口中只有一个方法为 在MyClass类中将invoke方法实现其中的proxy为代理对象实例,method为当前proxy对象被代理的方法,args为被代理方法所需的参数。 创建好该InteceptorHandler的实现类后,接下来需要通过Proxy类下的newProxyInstance方法来创建代理类。 Loader为当前目标对象使用的类加载器,获取加载器的方法是固定的。Interfaces 指定当前目标对象实现的接口的类型,使用泛型方式确认类型 H 指定动态处理器,执行目标对象的方法时,会触发事件处理器的方法,即invoke方法。 动态代理实现的原理: 通过newProxyInstance方法创建一个代理类的字节码文件,并由jvm运行该文件创建一个代理类的对象并返回