Proxy模式.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Proxy模式 Louis Young Proxy类作用 在运行时通过一个统一的接口把一个实例上的接口分发到另外一个对象上. 该类通常用来生成一个类型安全的代理一组接口的对象.而不需要预先产生一个代理类并用编译工具进行编译然后生成对象. 所有的代理类的方法调用都被转发到一个调用处理器对象的一个单一的方法上. Proxy类的构造器 Proxy的成员方法 方法说明 static?InvocationHandler getInvocationHandler (Object?proxy) 返回某个代理对象的调用处理器 static?Class?getProxyClass (ClassLoader?loader, Class?...?interfaces) 得到多个接口的代理类型 static?boolean isProxyClass(Class??cl) 判定某个类型是否是代理类型 static?Object newProxyInstance (ClassLoader?loader, Class?[]?interfaces, InvocationHandler?h) 产生一个代理对象 产生代理对象的方法 产生代理对象的方法有两种: 使用getProxyClass先得到类型,然后利用反射得到对象 直接使用newProxyInstance 得到代理对象 例子-准备接口 两个接口 public interface IFunc1 { void print(String info); int add(int a,int b); } public interface IFunc2 { String format(String info); String input(); } 例子-准备接口实现 public class Func1Impl implements IFunc1 { public int add(int a, int b) { return a+b; } public void print(String info) { System.out.println(info); } } public class Func2Impl implements IFunc2 { public String format(String info) { return 格式化后的信息: + info; } public String input() { String re=null; …… return re; } } 理解代理反射类型(一) public class ProxyMain { public static void main(String[] args){ Class proxycls=Proxy.getProxyClass( Thread.currentThread().getContextClassLoader(), new Class[]{IFunc1.class,IFunc2.class}); try { Constructor[] constructors=proxycls.getConstructors(); for(int i=0;iconstructors.length;i++){ System.out.println(constructors[i]); } } catch (Exception e) { e.printStackTrace(); } } } 输出结果:public $Proxy0(java.lang.reflect.InvocationHandler) 注意观察:该反射类型的构造器的参数. 理解代理反射类型(二) Proxy的作用就是把多个接口通过反射,生成一个接口反射类型. 调用的任务就交给InvocationHandler,而且通过代理对象对接口的访问都会转接到对InvocationHandler中invoke函数的调用. 我们对接口的调用都通过实现invoke函数,并在其中调用用户接口 public Object invoke(Object proxy, Method method, Object[] args) Object proxy代理对象. Method method调用的方法. Object[] args调用函数参数. 例子-InvocationHandler 处理器实现 public class MyHandlerT implements InvocationHandler { //通过反射调用函数,需要对象, //所以我们必须用某种方式把接口的实现对象传递到这个类中使用 //用函数传递?构造器传递?(优先考虑构造器) //多个接口实现怎么办?(用数组,或把接口实现到一

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档