黑马程序员技术交流社区

标题: 为什么要用代理 [打印本页]

作者: 小漠    时间: 2014-9-24 10:39
标题: 为什么要用代理
本帖最后由 小漠 于 2014-9-25 11:42 编辑




如上图,代理类的作用就是在目标类的上下加一些代码,直接在目标类上下加不就可以了,为什么非要用代理
代理的作用是什么?不用拿张老师视频的例子给我讲,那个我懂,我想问的是在Java中,代理有什么作用?为什么要用


作者: 谢建平    时间: 2014-9-24 17:21
这代理我看得老晕.....我的理解 就是有什么事情交给代理做,而目标类不用每次都改,有时候我们要在自己目标类的基础上加点东西的
作者: dftgg    时间: 2014-9-24 18:03
如果要把一个接口的所有子类的方法都增加一个功能 你不是要把所有子类的方法都改了
作者: 小漠    时间: 2014-9-24 19:42
谢建平 发表于 2014-9-24 17:21
这代理我看得老晕.....我的理解 就是有什么事情交给代理做,而目标类不用每次都改,有时候我们要在自己目标 ...

继承不是也可以实现这个功能~~
作者: 奋发吧小白    时间: 2014-9-24 20:19
个人理解就是为了解决的问题:当你需要对某个程序修改或添加新功能时,但是你没有源码,只是知道一些基本信息,这时就需要把目标程序框架COPY过来,但是具体执行还是要目标来执行,但是在COPY过来的这个框架中,我们可以进行修改、添加等操作!这应该是代理的最初需要把!
作者: Beka    时间: 2014-9-24 22:53
比如要将程序交给客户前先要自己测试一下自己的代码吧,这时候代理就派上用场了。
作者: ⋛⋌⋚JEEP    时间: 2014-9-24 23:43
楼主的意思大概是能不麻烦何必麻烦呢。问题是现实设计项目中,人家才不会傻傻地给你源码,给你个目标类的Class文件,你就只能通过代理类去添加一些你需要在测试时候需要的系统功能。Proxy类是所有由它特供的静态方法创建的动态代理类的公共的父类,而且在设计上,就规定了必须要用统一的接口类去实现,酱紫的做法也是无可厚非的,可以达到统一访问,不能实现接口的类只能通过CGLIB库了创建子类去实现代理了。
具体可以参考一下地址:
1、http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/index.html
2、http://zhidao.baidu.com/link?url=CCbT-pi5cWne3dVnTlGamoxyYejpBemu--dsVw62vhyyqs1Gtu5vmKnmtoPN_bEQi_nb2axjv4bn_QZtkKfYPK
作者: luofeng    时间: 2014-9-24 23:55
简而言之,就是为了在不修改源码的前提下,为类加入一些新的功能。--------即给类加个包装。
作者: 小漠    时间: 2014-9-25 09:34
⋛⋌⋚JEEP 发表于 2014-9-24 23:43
楼主的意思大概是能不麻烦何必麻烦呢。问题是现实设计项目中,人家才不会傻傻地给你源码,给你个目标类的Cl ...

嗯嗯,明白了,非常感谢~~谢谢帮我解决问题
作者: darkads    时间: 2014-9-25 10:52
回复的都是大神啊!学习了
作者: 逍遥呆    时间: 2014-9-25 10:55
就是要在目标类的上下加点东西,又不能改变目标类




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