黑马程序员技术交流社区
标题:
动态代理的原理是怎么回事儿
[打印本页]
作者:
TK13761
时间:
2013-3-23 16:08
标题:
动态代理的原理是怎么回事儿
本帖最后由 谭仁龙 于 2013-3-25 13:54 编辑
动态代理原理是怎么回事儿,一般都什么时候用。求指点
作者:
黄玉昆
时间:
2013-3-25 07:17
动态代理的工作原理:1)Client(客户端)调用代理,代理的构造方法接受一个InvocationHandler,client调用代理的各个方法,代理的各个方法请求转发给刚才通过构造方法传入的handler对象,又把各请求分发给目标的相应的方法。就是将handler封装起来,其中this引用了当前的放(发来什么请求就接受哪个方法)。
示意图:
1363910650_6956.jpg
(43.93 KB, 下载次数: 29)
下载附件
2013-3-25 07:16 上传
2)将创建代理的过程改为一种更优雅的方式,eclipse重构出一个getProxy方法绑定接受目标,同时返回代理对象,让调用者更懒惰,更方便,调用者甚至不用接触任何代理的API。
3、把系统功能代理模块化,即切面代码也改为通过参数形式提供,怎么把要执行的系统功能代码以参数的形式提供:
1)把要执行的代码装到一个对象的某个方法中,然后把此对象作为参数传递,接收者只要调用这个对象的方法,即等于执行了外接提供的代码。
2)为bind方法增加一个Advice参数。
作者:
罗平
时间:
2013-3-25 11:46
补充一点:.当请求代理类的方法时,这个请求会被转到执行与代理类关联InvocationHandler 的invoke方法。那InvocationHandler到底是什么?对它的理解可以是这样: 它用来处理方法的调用,实现类也有同样的意义;与代理类对象相关联则表示, 它就是负责处理代理类应该有的动作,把所有的方法请求分发到invoke这个方法上。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2