Java 代理模式

https://blog.csdn.net/scplove/article/details/52451899
java reflect proxy


java.jpg

Java动态代理的类和接口

    eureka
    0.0.1-SNAPSHOT
     

  • java.lang.reflect.Proxy:动态代理机制的主类,提供一组静态方法为一组接口动态的生成对象和代理类。
public static InvocationHandler getInvocationHandler(Object proxy) 
public static Class getProxyClass(ClassLoader loader, Class... interfaces) 
public static boolean isProxyClass(Class cl) 
public static Object newProxyInstance(ClassLoader loader, Class[] interfaces,InvocationHandler h)
  • java.lang.reflect.InvocationHandler:调用处理器接口,自定义invokle方法,用于实现对于真正委托类的代理访问。
public Object invoke(Object proxy, Method method, Object[] args)throws Throwable
  • java.lang.ClassLoader:类装载器类,将类的字节码装载到 Java 虚拟机(JVM)中并为其定义类对象,然后该类才能被使用。Proxy类与普通类的唯一区别就是其字节码是由 JVM 在运行时动态生成的而非预存在于任何一个 .class 文件中
    每次生成动态代理类对象时都需要指定一个类装载器对象:newProxyInstance()方法第一个参数。

动态代理机制

  1. 通过实现InvocationHandler接口创建自己的调用处理器。
  2. 通过为Proxy类指定ClassLoader对象和一组interface来创建动态代理类。
  3. 通过反射机制获得动态代理类的构造函数,其唯一参数类型是调用处理器接口类型。
  4. 通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数被传入。

你可能感兴趣的:(Java 代理模式)