黑马程序员技术交流社区
标题:
对于动态代理的疑惑
[打印本页]
作者:
张振纲
时间:
2012-8-29 10:33
标题:
对于动态代理的疑惑
首先代理的原理是当调用者要调用目标类时,没有进行直接调用
而是将命令传递给代理类
代理类实现某些借口后再去调用目标类
可是我有几个疑惑
1.为什么目标类和代理类都需要实现相同接口
2.动态代理中的InvocationHandlier究竟代表什么是代理类还是什么?作用是什么
作者:
寇龙飞
时间:
2012-8-29 10:59
1、
实现相同接口,这是面向接口编程,提高代码的可扩展性、降代码的低耦合性,便于代理测试,不需要修改主程序代码,只需要修改config.properties文件。
例如,视频中的例子,
InputStream ips = AopFrameworkTest.class.getResourceAsStream("config.properties");
Object bean = new BeanFactory(ips).getBean("xxx");
复制代码
我要用代理,则注释掉#xxx=java.util.ArrayList,不用代理时,启用xxx=java.util.ArrayList,而注释掉#xxx=com.itheima.zhangxiaoxiang.aopframework.ProxyFactoryBean
xxx=java.util.ArrayList
#xxx=com.itheima.zhangxiaoxiang.aopframework.ProxyFactoryBean
xxx.advice=com.itheima.zhangxiaoxiang.MyAdvice
xxx.target=java.util.ArrayList
复制代码
2、代理中的InvocationHandler是接口,构造代理类时第三个参数对象类实现此接口中的invoke方法,此方法invoke中传入目标类的对象,从而实现代理功能
代理类确实比较难,我昨晚看了两边,边看边敲代码才理解一下。你也得自己照着视频,便暂停边敲代码,一句话、一行代码去思考,才能更好的理解。
作者:
张振纲
时间:
2012-8-29 11:01
寇龙飞 发表于 2012-8-29 10:59
1、
实现相同接口,这是面向接口编程,提高代码的可扩展性、降代码的低耦合性,便于代理测试,不需要修改主 ...
感谢二楼
代理彻底晕菜,准备去试试你的建议
边看边敲试试
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2