A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孤守星空 中级黑马   /  2014-9-4 22:20  /  1152 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么是代理?连百度都查不到。有人说说是中介:中介指在不同事物或同一事物内部对立两极之间起居间联系作用的环节。对立的两极通过中介联成一体。中介因对立面的斗争向两极分化,导致统一体的破裂。
中介的定义肯定没法在java面试里说吧。这种问题简直无语啊。能查到代理模式的意思。我看到有人说
  代理的定义:    一个已近开发好了的目标类,想为这个类增加一些系统功能,这时我们就可以编写一个与目标类具有相同接口的代理类,代理类的
每个方法调用目标类的相同方法,并在调用方法时加上系统功能的代码,这时候调用代理类就可以获得目标类里面的方法。
这个是代理的定义么?我有强迫症啊,到底什么是代理?
我能不能理解成代理其实就是连接对象和目标类的一个中转站,通过这个中转站达成功能的添加以及控制对目标类的访问
求各种指导啊
简直丧心病狂啊,我这种不会总结的人怎么破啊。好多面试题怎么都是谈谈理解啊·······

5 个回复

倒序浏览
必须收藏
回复 使用道具 举报
像做生意的似的,,你想想,你是生产商家,我是你的代理商,就是替你卖东西,我赚差价。
回复 使用道具 举报
我也看没明白视频 看了一会就看迷糊 准备再学习学习
回复 使用道具 举报
哈哈,貌似这个问题困扰了很多人啊,我就说说我的理解吧。
1.首先说下什么是代理。
举个例子:代理类和目标类的关系就像是经纪人与明星一样。用代理的原因就是让目标类可以更专注的完成自己的业务逻辑,其他繁琐的逻辑由代理类完成,从而达到代码增强的功能。就像明星只需要专著自己的演绎事业,而像面对记者琐碎的采访就交给经纪人好了,从而达到名利双收,相当于代码增强部分。
2.代理类 目标类 要实现相同接口。
首先无论是代理类还是目标类都要实现相同的接口,目的是要达成共同的协议,如果两个类不实现同一个接口不干同一件事,也就没有代理的意义了,这也就是为什么代理可以让目标类在不改动源码的情况下实现代码增强。
3.代理内部是如何实现的。
说说静态代理吧,这样相对容易些。其实在静态代理中,代理类的内部要有目标类的真实对象,由于实现相同的接口,代理类和目标类对外访问的方法完全相同。比如:当我们访问代理类method1方法的时候,实际代上理类method1方法访问的是目标类的method1方法,当拿到目标类的返回结果时,代理类的method1方法可以对这个结果做进一步的加工。聚个现实的例子:就像记者想知道明星早餐吃什么。这个问题首先会问经纪人,接着经纪人就会问明星,明星的回答是豆浆,油条。但是经纪人觉得这个答案太掉价可能会对明星产生负面影响,然后经纪人告诉记者:“明星每天早上吃牛奶面包”。

说到这里相信楼主对代理应该有初步的了解了,其实代理并不难,细细琢磨一下就懂了。还有楼主说的什么中转站,这个理解不太对啊。但是跟中介者模式倒是有几分相似,有兴趣可以看一下。

回复 使用道具 举报
yuZhe_toString 发表于 2014-9-5 11:41
哈哈,貌似这个问题困扰了很多人啊,我就说说我的理解吧。
1.首先说下什么是代理。
举个例子:代理类和目标 ...

= = 非常感谢你百忙之中抽空帮我回答的这么具体。
其次我说一下其实我的问题在于定义一个概念这个问题,而不是举例解释这个问题。
我觉得吧java问的代理应该就是
代理模式了,即对其他对象的代理提供一种代理以控制对这个对象的访问。
静态代理和动态代理的区分主要是按代理的创建时期来划分的。静态代理在程序运行前代理类的.class就已经存在了,而动态代理是在程序运行时运用java反射机制动态创建而成的

要是老师在这么问,我就这么回答了。
如果要问动静态代理的区别,我就回答:1.代理创建时期不同.2.静态代理只能代理一个类,而动态代理可以代理一个接口下的所有实现类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马