黑马程序员技术交流社区

标题: 关于代理的问题 [打印本页]

作者: 高丽华    时间: 2014-1-19 10:16
标题: 关于代理的问题
刚才我看有的面试完的学哥学姐们发表的一个问题我也没有搞明白,大家能不能给我一个详细的答案,我再此谢谢了!!{:soso_e100:}
问题就是动态代理与代理的区别?


作者: 高丽华    时间: 2014-1-19 14:02
为什么没有人回答我的问题??太难了???
作者: 宋星    时间: 2014-1-19 16:17
其实动态代理也是代理的一种,代理分为静态代理和动态代理。
静态代理类: 由程序员创建源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。
动态代理类: 动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。
为什么会出现动态类?
因为要为系统中的各种接口的类增加代理功能,那将需要太多的代理类,全部采用静态代理的方式,写成千上万的代理将是一件非常复杂的事情,所以出现了动态代理,可以很容易的生成代理。
生成动态代理的方法:
1.Jvm可以在运行期动态的生成类的字节码,这种动态的生成的类往往被用作代理类,即动态代理类
2.JVM生成的动态类必须实现一个或多个接口,所以JVM生成的动态类只能用作具有相同接口的目标类的代理。
3.CGLIB库可以动态生成一个类的子类,一个类的子类也可以用作该类的代理。所以可以用CGLIB库为一个没有实现接口的类生成动态代理。

作者: 高丽华    时间: 2014-1-19 16:21
宋星 发表于 2014-1-19 16:17
其实动态代理也是代理的一种,代理分为静态代理和动态代理。
静态代理类: 由程序员创建源代码,再对其编译 ...

谢谢你太好了!!
作者: 宋星    时间: 2014-1-19 16:24
呵呵,不用客气,我想请你帮一下忙,我现在需要技术分,可以给我加一分么
作者: 高丽华    时间: 2014-1-19 16:26
宋星 发表于 2014-1-19 16:24
呵呵,不用客气,我想请你帮一下忙,我现在需要技术分,可以给我加一分么 ...

我只能给你金币  你就等版主给你加分吧!!嘻嘻嘻
作者: 宋星    时间: 2014-1-19 16:28
嘿嘿,不是回答问题就有分吗,为什么没有咧?
作者: 高丽华    时间: 2014-1-19 16:36
宋星 发表于 2014-1-19 16:28
嘿嘿,不是回答问题就有分吗,为什么没有咧?

因为我不是版主,呵呵呵:)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2