学习笔记

来源:互联网 发布:淘宝双十一的由来 编辑:程序博客网 时间:2024/04/28 15:39

       今天太高兴了,总算明白动态代理、AOP的思想了......哈哈。

       我之前学过代理设计模式,以前写DAO时,就是用的静态代理,Bean工厂类也是使用反射、属性配置文件生成Bean类的。但是我对动态代理、AOP一直都是可望而不可及啊,吸收不了它们的思想,今天可是收获不小啊。

      我现在对动态代理的理解是:利用JDK提供的API(一个实现了一个或多个接口的类),生成动态类,此动态类只有一个有参构造方法,参数InvocationHendler类型的,也就是说动态类会中有一个成员字段是InvocationHendler类型的,此时调用动态类的任何方法,就是调用动态类中的InvocationHendler类型的字段的invoke方法(但Java语言规范中规定:从Object类中继承的方法中只有equals、hashCode、toString满足此约定,例如:getClass方法不会遵守此约定。),可以在invoke方法中添加动态类的目标类(target自己定义的类,替代动态类,通常与动态类实现了相同的接口)和所需要的交叉业务类(advice自己定义的类)。的结合代理设计模式的思想,将动态类作为真实类,实现了InvocationHandler接口的类作为代理类。这样就可以在代理类的invoke方法中可以做一些额外的事情(“额外的事情”通常是封装到的交叉业务(advice类)中)。

       我现在对AOP的理解是:面向方面的编程(面向切面编程)。多个模块中都存在的业务,称为交叉业务。AOP就是将将交叉业务的代码封装在一个类中,以对象的形式传递到需要此交叉业务的的模块中。

原创粉丝点击