java中的动态代理实现,java jdk动态代理原理

  java中的动态代理实现,java jdk动态代理原理

  代理的意思是:在某些场景下,对象会找代理人帮他完成一些工作,比如某个明星的代理,买家找房产中介等。

  代理主要是对对象的行为做一些附加的辅助操作。

  如何创建代理对象:

  Java中代理的代表类是:Java.lang.reflect.Proxy

  Proxy提供了一个静态方法来为对象生成代理对象返回。

  主要类别:

  公共类测试{ public static void main(string[]args){//1。创建类,对象类必须实现接口star s=new star(晓明);//为明星对象小明生成一个代理对象(broker)skills 2=staragentproxy . get proxy(s);S2 . sing();//取代理的S2 . jump();//运行结果://代理开始//小明开始唱歌//代理结束//代理开始/小明开始跳舞//代理结束}} Star类(object类):

  //star类公共类star实现skill { private string namepublic star(String name){ this . name=name;}//重写方法public void jump(){ system . out . println(名称 start dancing );} public void sing(){ system . out . println(name 开始唱歌);}}行为接口类:

  //行为类公共接口技能{ void jump();//Dance void sing();//唱歌}代理类:

  导入Java . lang . reflect . invocation handler;导入Java . lang . reflect . method;导入Java . lang . reflect . proxy;//代理类public class StarAgentProxy {//定义一个方法返回一个star对象的代理对象public static Skill get Proxy(star obj){//为这个对象生成一个代理对象Xiaoming/* public static Object new Proxy instance(class loader,class?[]接口,对象实现的接口列表,Invoke Handler H)*/return(skill)proxy . newproxyinstance(obj . getclass()。getclassloader(),Obj。GetClass()。GetInterfaces(),New Invocation Handler(){ @ override public object invoke(object proxy,method method,object [] args)抛出Throwable { system . out . println( agent start );//真的让小明载歌载舞//method==被调用的方法对象,args==表示这个方法的参数,objectrs=method.invoke (obj,args);System.out.println(“代理结束”);返回RS;} });}}实施步骤:

  1.必须有一个接口。

  2.代理对象需要实现接口。

  3.使用代理类提供的方法获取对象的代理对象。

  通过代理对象调用方法的执行过程是什么样的?

  1.先去中介吧。

  2.代理可以为该方法做一些额外的辅助工作。

  3.开始执行真正触发对象的方法。

  4.返回给代理,代理负责将结果返回给方法的调用方。

  代码优化的关键步骤:

  1.必须有接口,实现类要实现接口(代理通常是基于接口实现的)。

  2.创建一个实现类的对象,它是一个业务对象,然后为该业务对象创建一个代理对象。

  动态代理的优势:

  1、可以在不改变方法源代码的情况下增强方法功能,提高代码重用性。

  2.简化编程工作,提高开发效率,提高软件系统的可扩展性。

  3.您可以充当代理对象的所有方法的代理。

  4.它非常灵活,支持任何接口类型的实现类对象作为代理,也可以直接作为接口本身的代理。

  一个充当任何接口类型的实现类对象的代理的框架(运行泛型)

  public static T T get(T obj){ return(T)proxy . new proxy instance(obj . getclass()。getClassLoader(),obj.getClass()。getInterfaces(),new invocation handler(){ @ Override public Object invoke(Object proxy,Method method,Object[] args)抛出Throwable { return null} });}关于理解Java动态代理的原理和实现的这篇文章到此为止。关于Java动态代理的更多信息,请搜索Popular IT以前的文章或继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • ubuntu18.04安装jdk8,ubuntu中安装jdk
  • ubuntu18.04安装jdk8,ubuntu中安装jdk,Ubuntu 安装 JDK8 的两种方法(总结)
  • JDK1.8安装教程,安装配置jdk1.8
  • JDK1.8安装教程,安装配置jdk1.8,2020JDK1.8安装教程详解(一次就可安装成功)
  • ,,jdk8使用stream实现两个list集合合并成一个(对象属性的合并)
  • ,,IntelliJ IDEA之配置JDK的4种方式(小结)
  • java代理模式详解,java代理模式的典型例子,java代理模式(jdk proxy)
  • java中spi有什么作用,jdk的spi机制
  • java中spi有什么作用,jdk的spi机制,一文搞懂Java的SPI机制(推荐)
  • ,,详解JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)
  • ,,JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版整理
  • ,,JAVA JDK8 List分组的实现和用法
  • idea配置tomcat和jdk,idea配置本地gradle
  • 简单叙述一下jdk环境变量的配置,jdk环境变量配置是干什么的
  • 建立Java开发环境,安装JDK,一般需要设置环境变量,在安装完JDK后,需要在环境变量中配置
  • 留言与评论(共有 条评论)
       
    验证码: