搜课云网 > 北大青鸟 > 资讯总汇 > 代理模式之Java动态代理说明

代理模式之Java动态代理说明

机构:北大青鸟 时间:2016-01-27 11:22:17 点击:831

  1. Overview

  Java在java.lang.reflect包下,界说了自己的代办代庖。操作这个包下的类,我们可以在运行时动态地建树一个代办代庖类,实现一个或多个接口。并将体例的挪用转发到你所指定的类。因为现实代办代庖是在运行时建树的,所以称为:动态代办代庖。

  Proxy:完全由java发生的,而且实现了完整的subject接口。

  InvocationHandler:Proxy上的任何体例挪用城市被传入此类,InvocationHandler节制对RealSubject的访谒。

  因为Java已经辅佐我们建树了Proxy类,我们需要有法子告诉Proxy类你要做什么,我们不能像以前一样把代码写入到Proxy类中,因为Proxy类不是我们实现的。那么我们应该放在哪里?放在InvocationHandler类中,InvocationHandler类是响应代办代庖的任何挪用。我们可以吧InvocationHandler想成是代办代庖收到体例挪用后,请求做现实工作的对象。

  2. java.lang.reflect.InvocationHandler

  被代办代庖实例所实现的一个接口,内部只有一个invoke()体例,签名如下;

  Java代码

  public Object invoke(Object proxy, Method method, Object[] args)

  今世办代庖的体例被挪用的时辰,代办代庖就会把这个挪用转发给InvocationHandler,也就会挪用它的invoke()体例。

  3. java.lang.reflect.Proxy

  供给用于建树动态代办代庖类和实例的静态体例,它仍是由这些体例建树的所有动态代办代庖揽磕超类,我们经常使用的静态体例是:

  Java代码

  newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)

    更多资讯:武汉软件开发培训学校   

师资介绍