北京网站设计联系电话,影视公司宣传片,网站分析工具有哪些,东昌府聊城做网站公司一、代理
为其他对象提供一种代理以便控制对这个对象的访问。
#xff08;1#xff09;静态代理
#xff08;2#xff09;动态代理
1#xff09;JDK自带的动态代理
2#xff09;javaassist字节码操作库实现
3#xff09;CGLIB
4#xff09; ASM#xff08;底层…一、代理
为其他对象提供一种代理以便控制对这个对象的访问。
1静态代理
2动态代理
1JDK自带的动态代理
2javaassist字节码操作库实现
3CGLIB
4 ASM底层使用指令可维护性较差 二、静态代理 静态代理模式一般会有三个角色
抽象角色指代理角色和真实角色对外提供的公共方法一般为一个接口
真实角色需要实现抽象角色接口定义了真实角色所要实现的业务逻辑以便供代理角色调用。也就是真正的业务逻辑在此。
代理角色需要实现抽象角色接口是真实角色的代理通过真实角色的业务逻辑方法来实现抽象方法并可以附加自己的操作。 三、动态代理
1Proxy
InvocationHandler接口
.invoke(Object proxy,Method moehtod,Object[] args) 代理执行接口拦截方法
Proxy
.newProxyInstance(ClassLoader loader,Class[] interfaces,Invcationhandler handler) 创建动态代理实例 2CGLIB MethodInterceptor intercept(Object obj,Method method,Object[] args,MethodProxy proxy) Object 拦截方法 Enhancer
setSuperClass(Class superClass) 设置父类setCallback(CallBack callBack) 设置回调拦截器setClassLoader(ClassLoader loader)create() Object 创建代理对象
MethodProxy
invokeSuper(Object obj,Object[] args) Object 执行代理对象invoke(Object target,Object[] args) Object 执行被代理对象