00:00
好,然后呢,我们再来看一下呢,我们的第二个,第二个是这个method method这个类啊,它是一个类,这个类呢,是来表示方法的,表示方法的确切的说呢。好,确切。啊,确切的说,它就是你的目标类中的方法,目标类中的方法,那么它的作用是什么呢?作用是通过这个method,我们可以执行某个。而某个目标类的方法,就是说你想执行谁通这个method就能办到,通过这个method来执行你的目标类的方法,这是method。它怎么用呢?它是执行的是method类,它的一个叫做invo方法,你要注意的是,这个invoke只是和它碰巧同名而已,但是完全不一样,这个invo是这个接口中的一个方法。
01:16
而这个invo是这个类中的方法,只是名字恰巧一样而已。那这个method in work,它的具体使用的方式就是method.invo然后第一个是什么呢?是你要执行的那个对象,这个对象实际上就是目标对象,然后这是方法的参数,也就是我刚才我给你写的就这段。说这个。就是他。通过这样的语句呢,我们就可以执行这个对象的方法。参数里四那通过这个magic work,我们可以执行任意对象的方法。
02:02
而不需要知道这个方法的名称,就是说你要使用这个方法之后,你通过这个对象就能执行了,而不需要知道这个方法叫什么名字,因为这个method的它的值是JDK帮你来确定的,不需要你来管理啊,就是method的类,它通过调用这个引某个方法来表示执行方法,那我们在成序中用这个method的类,因为它在哪存在呢?在这儿存在呢?看到这个了吗?这个method类,它代表是目标类中的方法,那么method in Mo的目的就是执行目标方法诶。那就是说呢,我们这来说明一下啊,说明method in work,它就是用来执行这个目标方法的,它等同于等同于我们静态代理中的哪句话呢?也就是这句话。
03:09
这句话大家看啊,这句话是静态代理中目标方法的执行吧,就等同于这句话。就等于他。那如果说你要是这么用的话,这个目标对象你得知道是谁吧。但现在我们换一种方式,我们用上面这种方式来代替的就是我们这句话的执行。这就是method的Mo,它的作用在程序中,它代表是目标方法的执行。啊,这是我们的第二个类,Method类,它表示我们要执行某个方法,哪个方法呢?是这个目标对象的方法,它等于静态大理中的。目标方法的调用,它俩的功能是代表是一样等价的,就是表示的方式不一样,这是我们的第二个类method的。
04:07
还有最后一个,把最后一个呢,给大家介绍一下第三个。第三个呢,是叫做proxy这个类。好好这个类,这个类干什么呢?它是一个非常核心的一个对象的目的是创建代理对象。它是出现对象的。以前呢,我们创建对象都是new啊,那之前呢,我们创建对象都是说new,然后类的构造方法啊,是这样的,用类的构造方法,那现在我们怎么做呢?现在。我们是使用类的方法来代替new。
05:07
的使用。我们使用pro类的方法来表示创建对象,我们来看它的方法,方法呢是一个静态方法,静态方法它的名字叫做newy new proxy instance。哎,是这么一个方法,静态方法,这个静态方法它的作用是。好,作用是创建代理对象。创建代理对象,那你可以等同于呢,静态代理中那个叫做new淘宝的语句。在静态代理中,你要想创建对象,我们在程序中是这么干的,就是说淘宝等于new,淘宝得到的是淘宝这个对象,那我们现在这句话的实现方式。
06:12
用的是我们刚才所说的这个new proy方法来执行的。相当于它。这是测对象吗?测验对象,那现在我们不用这个语句,我们用它来实现,用的是new blackitence。我们来看一下这个方法,它有什么样的内容啊。双击找到这个类。然后在这儿呢,反射包中的。在反射包中呢,我们这个类叫做拉C,然后方法呢,我们往里面去看。这个方法呢,是一个静态的。方法我们看马上就到。
07:01
然后这个方法我们看啊搜索一下。New。啊,这有个new pro,就这个方法啊,就是它。那在这呢,叫做new proxy instance这个方法的原型,它是一个静态的,是一个static的。返回值呢,是一个object参数呢,一共有这么三个,我把这个方原型呢考下来。好,拿过来。我们来看看这个方法原型啊,这个方法原型呢,我们来说这三个参数和这个返回值,说它的参数。参数的第一个叫做class loader。这个呢叫做类加载器啊,类加载器它是负责呢去向这个内存中加载对象的,内存中去加载对象的就是类加载器。
08:15
类加载器,它叫做class loader啊loader,那怎么来完成这个class loader,也就是说这个参数获取呢?你可以使用反射机制,使用反射。来获取对象的class loader啊,你可以通过反射来获取这个loader,那它具体怎么用呢?比如说你有一个类啊,你叫类A。A。那么你可以使用a.class或者说a.get class.get class loader就能获取这个值了,所以这块呢,你只需要调用的反射机制。
09:06
通过反射的方法get和load就能得到这个值了。L加载器,这是第一个参数啊。那么这个链加载器得用谁的压载器呢?是目标对象的类加载器。是目标对象。目标对象的类加载器啊,目标对象类加载器,这个你先知道这个概念就行了,一会通过例子呢,你就知道它应该怎么写了。实际上使用JDK代理,它的步骤是固定的,是固定的步骤,你都不需要想为什么要这么做,因为它的步骤是固定的,也就是JDK中设计好的步骤和规则,你这么用才能实现这个代理,它是固定的一个规则和步骤啊。这是第一个参数,第二个参数呢,它是叫做class interface,这是什么是接口。
10:03
是接口啊,这个是你的接口啊,接口目标对象所实现的接口也是反射获取的,这是interface,你看它的名字,告诉你是interface接口吗?什么类型的呢?类类型的第三个invoc hand h。这个他是谁呢?他是我们自己写的。啊,我们自己写的,也就是说我们在第一个中这写的,这不已成handle了吗?自己写的它啊,这是我们自己写的。代理类要完成的一个功能,你们看到了,通过这三个参数,我们就能加工出一个代理对象。
11:05
它的返回值。就是代理对象,就是代理对象啊,我们是说呢,通过这个方法,它根据这三个参数加工出一个对象出来,这个对象你就能用了,它就是我们所说的代理对象。啊,那我们这个方法new instance呢,它就是根据我们的参数。把它们当做原料,经过加工之后得到一个目标对象,你应该是说得到是个代理对象啊,啊是个代理对象,其实我想说的是是这个目标对象他的代理对象啊,是这样的,那简单说它就是代理对象就完事了,是这个目标对象的代理对象。
12:01
根据这三个参数加工出来之后,得的是这个目标对象所对应的是一个代理对象。啊,代理对象是这样的一个内容啊,它是代理对象,代理对象就是说动态代理呢,它是有一个创建对象的能力,不需要你去拗对象。我们是由这个方法它代替你的new来完成一个对象的创建的这种能力。这是代理对象,那么这个返回值,这个object就相当于是这个淘宝了。就相当于它了,那么它能够去调用方法完成功能的增加。这就我们所说的JDK动态代理中要用到的三个类,第一个是in OK handle表示你要干什么。Method表示,我要执行目标方法。
13:02
Proxy是用来创建对象的,就这么三个,用他们三个呢就能完成呢,JDK中动态代理的这个实现。
我来说两句