黑马程序员_高新技术学习笔记第九章

---------------------- android培训java培训、期待与您交流! ----------------------

动态代理技术

目标类,代理类,接口,Client调用程序
doSomeThing()
{前置
目标对象.doSomeThing()
后置
}

AOP面向方面编程
模块的交叉业务
安全,事务,日志等功能要贯穿到多个模块中,所以它们居寺交叉业务

JVM可以运行期间生成出类的字节码
生成的类往往被用作代理类
生成动态类必须实现一个或多个接口

目标类没有实现接口 CGLIB  生成一个类的子类

代理方法中如下,第四个位置是处理目标方法异常的catch块中

生成动态类

java.lang.reflect.Proxy
下 Class getProxyClass(ClassLoader loader//妈妈,Class<?>...interface//字节码实现了哪些接口)

Class clazzProxy1 = Proxy.getProxxyClass(Collection.class.getClassLoader()//通常是后面字节码的加载器,Collection.class);

StringBuilder sBuilder = new StringBuilder(name);

单线程

多线程使用StringBuffer//考虑线程安全

Class clazzParams = constructor.getParameterTypes();
//数组
sBuilder.deleteCharAt(length-1);
!=null&&!=0

newProxyInstance

public static Object newProxyInstance(ClassLoader loader, //类加载器
                                      Class<?>[] interfaces, //实现的接口列表
                                      InvocationHandler h) //InvocationHandler实例对象
                               throws IllegalArgumentException
返回一个指定接口的代理类实例,该接口可以将方法调用指派到指定的调用处理程序。

InvocationHandler

生成动态代理类

加载器  接口

创建动态类的实例对象

Invocation.class 作为构造方法的参数

constructor.newInstance()



关于动态代理目前很多东西还不能理解

可以参考

http://blog.csdn.net/dyh8818/article/details/314668


----------------------android培训java培训、期待与您交流! ----------------------

 详细请查看:http://edu.csdn.net/heima

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值