Java 代理模式

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


java.jpg

Java动态代理的类和接口

    <artifactId>eureka</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
  • 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. 通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数被传入。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 事例 小张是一个普普通通的码农,每天勤勤恳恳地码代码。某天中午小张刚要去吃饭,一个电话打到了他的手机上。“是XX公...
    余平的余_余平的平阅读 3,342评论 0 0
  • 代理模式 代理模式就是给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通...
    雨中独奏阅读 1,787评论 1 1
  • 版权声明:本文为博主原创文章,未经博主允许不得转载 前言 Java 代理模式在 Android 中有很多的应用。比...
    cc荣宣阅读 4,298评论 0 7
  • 我对你满心欢喜,你却总是顾左右而言他,满心欢喜总会落空,等待终有尽头,你永远读不懂我眉眼间的愁绪,也无法理解我没来...
    叫橘子的猫阅读 1,592评论 0 0
  • 小眼睛大头狮子,捂脸
    五彩小狮子阅读 1,670评论 1 1