00:00
然后再来看,那么这时候我们的静态代理就万事大吉了吗?No,静态代理有他的一个死穴,就他确实是改变不了,你怎么写,你符合静态代理的这套流程,就改变不了这个弊端啊,这就扼住那个命运的咽喉,这有他的咽喉,他被扼住以后就死了啊,我们得用动态代理改变这个被扼住的咽喉,怎么搞,你看。我们现在在这VOID有个S的这个方法,然后呢,如果我我这是业务功能,哎,同学们。我我可能不仅仅是这个,我可能还来一个秀,就是我业务功能可能会增加,比如说我又来个VOID。我来一个兽方法。秀就是我来做一个秀嘛,就表演走走秀,来一个秀,我这个地方增加了一个秀方法,然后我的这个刘德华要不要变。哦,你接口中有新增加的方法,溜德华肯定也要变,他必须实现这个方法,不然他就傻了,不然这这就就炸掉了,他的这个类就不能用了。
01:06
明白吗?接口中添加方法,它必须得添加这个方法,同样的周润发要不要,要不要接口变量,周润发也实际上这个接口周润发要不要加那个手方法要然后哎,你的代理或者是你的助力,你你接口变了,我这里面是不是也得受方法。我的天呐,就意味着怎么着?业务功能增加了,天下大变。全都变了。这种是最糟糕的设计了啊,我一个地方变了,然后这关联的全都变,就像牵一发而动全身的这种感觉,这种是设计中最糟糕的设计,不能啊,所以呢,我们静态代理只适合哎,业务功能固定来随便切换目标对象,切切切谁哪个目标对象来都OK的,这个是我近代代理能够完成任务的,这个天花板就到这了,一旦你要把当前的业务功能切换,对不起,我退场了。
02:04
我搞不了这个事,因为如果用他来搞的话,那改变的代码地方太多了,这样的话我整不明白,所以这时候动态代理商场啊,动态代理上场好,那么下面我们引出来,为什么要动态代理,就是业务功能需要灵活切换,所以我们需要动态代理来干活啊,我们把动态代理概念引出来再看。却无法进行零功能的灵活处理,就是他的咽喉被扼住的那个咽喉,他这处理不了,所以我们来动态代理完成这个事儿啊,那么动态代理。动态代理,代理对象在程序运行的过程中,动态在内存中啊,动态在内存中构建啊可以。
03:02
灵活,可以灵活地进行业务功能的切换。哎,这就是他存在的意义。那存在的意义,然后呢,动态代理,我们现在来梳理一个叫JDK动态代理,他们还是动态代理的一种,但是我把它单拎出来说,因为他重要啊,接这些动态代理,什么叫JDK动态代理呢?一。目标对象必须实现业务接口,哎,回头看跟静态代理一模一样,它也是通过接口去扩展功能的,如果没有接口,他JDK动态代理搞不了。他只能设目标对象,必须实现接口,这一点跟我们的金代代理一模一样,二。代理对象不需要实现业务。接口。
04:00
我的妈呀,这简直爽歪歪啊,啥意思来?你琢磨琢磨,目标对象实现业务接口,就这一趟,你都得实现业务接口,这没商量,因为你有这个接口才能实现对应的功能嘛,你来我这干嘛,你得实现接口的功能,但是是把这一枝子砍掉了。这边就这你代理对象不需要实现接口,那这边的这这些是不是就灵活了,我就不用被当前这个接口牵着鼻子走,所以动态代理直观上看砍了一半的,这个不灵活就砍掉,因为我的代理对象不需要实现业务接口。不需要,哎,这是一点啊,再来啊,代理对象不需要实现业务接口,再来跟静态代理不一样的点啊,动态代理的对象啊,在程序运行前不存在啊,在程序运行啊,程序运运行时动态的在内存中啊,内存中构建,这个刚刚已经说过了,但这也是他的特点或者理在这。
05:09
啊,好,还有。这个动态代理啊,动态代理灵活的进行业务功能啊,业务功能。的切换。这个其实就是比着进的代理来说的,就显摆嘛,你进的代理干不了这个活,我能干了,你进的代理这个不行,我可以就显摆嘛,我觉得啊,你就这么记,你好记,不然呢啊,本来就好好晦涩的概念,就就整不明白,你怎么好记就怎么记,怎么好理解就怎么记啊好,那么这是我们当前的这个JDK,哎,我得加上,不然的话,一说动态代理可是还有cg lab的啊。那么JDK啊,代理对象,那么目标对象好。我们下面当然要写代码来验证这个。
06:01
套路啊,走这么一套流程,我们要走JDK的动态代理的这么一套流程,那么在讲这个动态代理之前呢,我们有几个类和接口的熟悉。
我来说两句