码迷,mamicode.com
首页 > 编程语言 > 详细

Java 动态代理

时间:2015-09-26 18:30:43      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

1、动态代理的目的                                                                      

  动态代理用于代码的分离;将通用代码从各个业务模块中分离出来,不必在每个业务模块中都去实现,这样既减少了开发工作量,也便于维护;

  eg: “吃饭”、“说话”这两个业务都需要用到“张嘴”  “闭嘴”这两行代码,但是张嘴之后和闭嘴之前所做的事情是不一样的,这样将业务模块和通用模块(即 张嘴、闭嘴)分离出来,每次在说话 或者 吃饭的时候,使用通用模块+业务模块 实现吃饭和说话这两件事;

2、动态代理的应用                          

   最典型的应用是基于动态代理技术实现spring框架中的AOP(面向切面编程);  面向切面编程,通过切面代码层,实现业务代码和通用代码的分离,这样各个业务模块可以共用一个通用代码。大概原理如下:切面层代码提供了一个调用其他方法的接口(姑且命名为 invoke),通过反射机制将类 和 方法等参数传入后,便在invoke 里面执行此方法,传入的方法仅仅是invoke方法的一部分,另一部分便是通用代码,这样就将通用代码和业务代码编制在了一起。(实际上sping中的增强就是这么回事)

3、动态代理的原理及实现                                                              

   java提供了两种动态代理方式,一种是JDK动态代理,另一种是cglib动态代理;JDK动态代理仅仅实现了对接口的代理,cglib实现的是对对象的代理;二者相比,chlib综合性能更好一点;

  (1) JDK动态代理

  JDK动态代理是基于 “InvocationHandler接口”  和  “Proxy类” 实现的,其技术基础是 JAVA中的反射机制 及 面向对象中的重写

 

Java 动态代理

标签:

原文地址:http://www.cnblogs.com/tengpan-cn/p/4841033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!