黑马程序员技术交流社区

标题: 对动态代理技术还是看不明白! [打印本页]

作者: 覃宏海    时间: 2012-9-25 19:03
标题: 对动态代理技术还是看不明白!
在动态代理技术中Proxy和InvocationHandler都起到了什么作用?配置文件又是如何作用到动态代理技术中的呢?
Proxy又是如何与需要被代理的内容联系起来的呢?
谁能把动态代理技术的运行流程介绍一下?
作者: 尤圣回    时间: 2012-9-25 20:17
代理模式
概述
    为其他对象提供一种代理以控制对这个对象的访问。
适用性
    1.远程代理(RemoteProxy)为一个对象在不同的地址空间提供局部代表。

    2.虚代理(VirtualProxy)根据需要创建开销很大的对象。

    3.保护代理(ProtectionProxy)控制对原始对象的访问。

    4.智能指引(SmartReference)取代了简单的指针,它在访问对象时执行一些附加操作。
                         参与者
    1.Proxy
      保存一个引用使得代理可以访问实体。若RealSubject和Subject的接口相同,Proxy会引用Subject。
      提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体。
      控制对实体的存取,并可能负责创建和删除它。
      其他功能依赖于代理的类型:

    2.RemoteProxy负责对请求及其参数进行编码,并向不同地址空间中的实体发送已编码的请求。

    3.VirtualProxy可以缓存实体的附加信息,以便延迟对它的访问。

    4.ProtectionProxy检查调用者是否具有实现一个请求所必需的访问权限。

    5.Subject
      定义RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。

    6.RealSubject
      定义Proxy所代表的实体。
类图

例子
Proxy
public class ProxyObject implements Object {

    Object obj;
   
    public ProxyObject() {
        System.out.println("这是代理类");
        obj = new ObjectImpl();
    }
   
    public void action() {
        System.out.println("代理开始");
        obj.action();
        System.out.println("代理结束");
    }
}
Subject
public interface Object {

    void action();
}
RealSubject
public class ObjectImpl implements Object {

    public void action() {
        System.out.println("========");
        System.out.println("========");
        System.out.println("这是被代理的类");
        System.out.println("========");
        System.out.println("========");
    }
}
Test
public class Test {

    public static void main() {
            Object obj = new ProxyObject();
        obj.action();
    }
}
result
这是代理类
代理开始
========
========
这是被代理的类
========
========
代理结束

QQ截图20120925201619.jpg (11.76 KB, 下载次数: 35)

QQ截图20120925201619.jpg

作者: 尤圣回    时间: 2012-9-25 20:19
这个给你

Java知识点列表.pdf

63.89 KB, 下载次数: 356


作者: 王震阳老师    时间: 2012-10-8 13:36
java知识点我要了。
作者: 徐传任    时间: 2012-10-9 00:15
看看..........顶
作者: 言乐    时间: 2012-11-12 22:09
我也要了
作者: 周志强    时间: 2012-11-30 21:28
哈哈哈 收入囊中  啦  谢了
作者: xiaosuisky    时间: 2012-12-2 10:23
java知识点我也要了。谢谢兄台啊。
作者: 郝肖肖    时间: 2013-1-13 10:46
呵呵,很好的知识点,收集。兄台。
作者: 谷文仁    时间: 2013-3-14 10:32
不错学到了新的知识.{:soso_e100:}
作者: 周志伟    时间: 2013-3-17 11:36
灰常给力~~收了~~~~~
作者: 陈柏伊    时间: 2013-3-25 11:18
我也要了
作者: §風過無痕§    时间: 2013-6-18 06:25
。net的飘过
作者: Angel♥儱唲    时间: 2013-7-18 15:47
刚刚学习java,这么好的东西,果断拿下,谢谢前辈分享




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