代理模式之Java动态代理说明
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)
更多资讯:武汉软件开发培训学校