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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 覃宏海 中级黑马   /  2012-9-25 19:03  /  3607 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在动态代理技术中Proxy和InvocationHandler都起到了什么作用?配置文件又是如何作用到动态代理技术中的呢?
Proxy又是如何与需要被代理的内容联系起来的呢?
谁能把动态代理技术的运行流程介绍一下?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

13 个回复

倒序浏览
代理模式
概述
    为其他对象提供一种代理以控制对这个对象的访问。
适用性
    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, 下载次数: 34)

QQ截图20120925201619.jpg
回复 使用道具 举报 1 0
这个给你

Java知识点列表.pdf

63.89 KB, 下载次数: 346

回复 使用道具 举报 0 1
java知识点我要了。
回复 使用道具 举报 0 1
看看..........顶
回复 使用道具 举报 1 0
我也要了
回复 使用道具 举报
哈哈哈 收入囊中  啦  谢了
回复 使用道具 举报
java知识点我也要了。谢谢兄台啊。
回复 使用道具 举报
呵呵,很好的知识点,收集。兄台。
回复 使用道具 举报
不错学到了新的知识.{:soso_e100:}
回复 使用道具 举报
灰常给力~~收了~~~~~
回复 使用道具 举报
我也要了
回复 使用道具 举报
。net的飘过
回复 使用道具 举报
刚刚学习java,这么好的东西,果断拿下,谢谢前辈分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马