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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cody 中级黑马   /  2015-8-9 20:49  /  499 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么是动态代理?老毕的视频好像没有讲过。求解说

4 个回复

倒序浏览
貌似张孝祥的java高级里讲的
回复 使用道具 举报
动态代理就是处理和过滤一些消息,把消息转给委托类。
定义就是:为其他对象提供一种代理以控制对这个对象的访问。

一个典型的动态代理创建对象过程可分为以下四个步骤:
1、通过实现InvocationHandler接口创建自己的调用处理器 IvocationHandler handler = new InvocationHandlerImpl(...);
2、通过为Proxy类指定ClassLoader对象和一组interface创建动态代理类
Class clazz = Proxy.getProxyClass(classLoader,new Class[]{...});
3、通过反射机制获取动态代理类的构造函数,其参数类型是调用处理器接口类型
Constructor constructor = clazz.getConstructor(new Class[]{InvocationHandler.class});
4、通过构造函数创建代理类实例,此时需将调用处理器对象作为参数被传入
Interface Proxy = (Interface)constructor.newInstance(new Object[] (handler));
为了简化对象创建过程,Proxy类中的newInstance方法封装了2~4,只需两步即可完成代理对象的创建。
生成的ProxySubject继承Proxy类实现Subject接口,实现的Subject的方法实际调用处理器的invoke方法,而invoke方法利用反射调用的是被代理对象的的方法(Object result=method.invoke(proxied,args))
如果您觉得我的回答还满意的话,请回复一下我
我的QQ:2355928351
如果您还有其他的入学前问题可以加我的QQ

回复 使用道具 举报
好给力的回答
回复 使用道具 举报
耀阳圣尊 发表于 2015-8-10 09:07
动态代理就是处理和过滤一些消息,把消息转给委托类。
定义就是:为其他对象提供一种代理以控制对这个对象 ...

很满意,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马