00:00
然后呢,在成语中我们还需要创建的是handle了呀。Invocation handle了,Handle了,NEW1MY引我变成handle了,把这个功能得传进去看代理了。new pro第一个是功能的get class get load固定写法功能的get class interface接口,第三个是你handle了。然后找了个代理吗?代理因为这个功能是有接口的嘛。接口是hello service吗?我们用是接口来表示对象的啊接口,然后proy out加回车啊强制转换,那现在C再去调用你的B,然后传了一个比方说嗯,传的这是一个市场。啊市场,然后这int,然后我们说这是一个数量。
01:00
Number,那此时我们输出的这个结果就是我们期望要得到的结果,我们期望的nu等于多少呢?加上我们的nu。来看下这个结果吧。你看这是我们期望写好的这个四吧,这样的话你就达到这个目的,我可以重用已有这个功能啊。原先M程序中有这个功能啊,写好了,但是需要稍加改动,它能适应我的新项目,那我就可以保证我在不改动它的源代码的前提下,这个改不了,然后我们通过这个代理在这儿是可以在调用其功能之上说补充一些功能来达到你的目的。这就是动态代理在实际项目中的真实应用,我们在项目中附加功能时一般都这么用,保证你原始的这个代码呢?是不变的,因为有些时候你改不了嘛,这个代码别人写的。
02:03
没有源代码你改不了,所以现在你就通过这个代理的方式,间接的来完成一个结果的修改,这样就可以了,当然你也可以在这个方法调的时候,你会增加功能,比方说这里边儿我自己。那我在项目中写一个数据库,说我在项目中记录这个数据库,记录数据库啊,把我们操作写到数据库中,这都行啊,那就说你可以围绕着原先这个方法,你可以额外增加很多功能嘛,这就是我们可以利用原有的功能,通过额外的一定的修改来满足我的目前的项目的需要,这就是我们现在动态代理,他在我们实际项目中一个真实的应用,就是这么用的,只不过的例子写的稍微简单一点而已啊。行,这是动态代理呢,我们在项目中真实要用的方式就怎么用就行了,所以呢,我不需要你掌握,说这个代码怎么写,我不需要。
03:02
我让你知道的就是一个是说概念是什么,什么是动态代理,它是一种反射机制,创建对象的能力,那在这里呢,你要注意的是JDK,它的动态代理。动态代理必须有接口,必须有接口,为什么必须有接口呢?是因为你们在用的时候呢,我们看它的实现中。第二参数这个是不是接口啊,大家可能不信,这个是不是接口呢?是我给你输出一下你就明白了,它这有接口啊,就说这个值是什么呢。它实际上是一个接口,我们再把这个代码呢,再来执行一遍。你看啊,这块这个,因为它是数组啊,数组的话我还得再去处理一下。
04:02
他是数组。数组呢,它有下标零吧,然后再点它的name这么做。再来看一下这个效果。好,那我们看到这块是不是那个hello service吧,是那个接口吧。哈,这不那个接口吗。Hello service hello是接口,在JDK的代理中,他必须知道这个接口的信息才行,没有接口是用不了的,所以呢,GDC代中你的这个目标类必须有接口,也就说你的目标类必须实现接口。不实现接口,用不了这个JDK动态代理,他就说没有接口时。没有接口时,你需要使用的是CJLA后的代理,就这种方式。
05:02
这是乱代理,然后能干什么呢?那就是说我们可以去给你的目标类增强功能。你可以在。原先的这个功能之上不改变的情况下,你可以增加呢,额外的功能增强功能啊,这是我们的功能增强叫功能增强。
我来说两句