00:01
好,我们现在呢,开始上课,大家应该都到了吧,开始上课啊,首先呢,我来回顾一下上课的内容,我们呢,还是用思维导图的方式,新建一个思维导图。啊。啊,这个名字呢,我们就叫做动态代理。首先说概念啊,什么是动态代理,在讲它之前呢,我们先讲这个代理的概念,先讲代理啊代理。这个叫做代理模式的一个概念,什么代理模式呢?我们来看。代理模式啊,那就是说呢,当一个对象不能直接使用。啊,那么可以呢,在我们叫做客户端和目标对象之间呢,创建一个中介啊,创建一个中介,这个中介啊就是代理,这是代理模式啊。
01:20
它指的就是说,当一个对象不能直接使用,你需要在你的客户端和目标之间呢设一个中介,这个中介呢就是代理。代理模式呢,它有什么用处呢?它的作用,所以呢,实际上主要有两点,第一点呢,我们叫做控制访问,第一点是说呢,我们可以在这个代理中啊。控制。是否可以调用目标对象的方法,这叫做控制访问,也就说在这个中介里边呢,你可以通过中介访问到你的目标。
02:03
也可以控制你呢,访问不到这个目标,比如说你租房子吧。租房子。这房子是中介帮你干的啊,中介房屋中介,然后呢,你是用户。啊,用户现在的用模式是用户访问中介,然后中介呢,他访问是这个我们叫房东吧。哦,是这样的。这时候这个中介呢,在大多数情况下是不让你去访问到这个房东的,这就是控制访问,当然说你交了钱了,这个用户呢,可以访问到房东,就是说你可以在这个中介代理中可以控制这这个目标对象,你能访问还是不能访问,这叫做控制访问,这是第一个。第二个我们叫做功能增强,功能增强它就是说呢,我们可以在完成的目标对象的调用时。
03:08
哎,我们可以附加。一些额外的功能。啊,额外的功能,我们把这些这些额外的功能啊,额外的功能,那我们叫做功能增强,也是说我可以保证呢,在我调用这个目标对象的方法时候。我可以呢去写自己的代码来完成一些额外的功能,比方说这个中介,房屋中介,它是让你完成了这个租房这个功能。也就说你找到房东了,能完成租房,同时他要收费吗?那就是在你原先这个期望的功能之上,额外的做了一些条件,这些我们叫做功能增强。
04:05
你可以完成租房,然后你得交费吗?这个交费就属于是增加的内容,我们叫做功能增强啊,这是代理的主要作用,控制访问和功能增强,那在我们的实际项目中呢,我们主要用的是第二个就是功能增强,主要用的它。这个用的最多的增强功能,在原有的对象的功能不变的情况下,我可以呢,经过改造,增加我自己期望的一些额外的功能,功能增强它的作用。我们再来看呢,代理的实现方式,实现方式呢有两种,第一种方式呢,是上节课我们讲到的叫静态代理,然后静态代理,那什么是静态代理呢?静态代理呢,他是说呀。我们这个。
05:00
代理类,代理类是手工实现的。是手工实现的一个Java文件。然后呢,同时我们代理的这个目标对象啊,是固定的。是固定的。这是静态代理,比如这个类是存在的,上节课我们讲的是个淘宝类吗?淘宝这个类。它是我们的代理类,这个类它对应的是一个淘宝的点Java文件吧,这个代理类是真实存在的,真实存在的,而且呢,他所代理这个目标类是固定好的,这个值已经固定好了,是金士顿的优盘厂家嘛,所以这个代理呢是固定的,这种方式呢,我们叫静态的。所谓静态的,就是我们这些东西都是确立好的了,在程序执行之前,我们的代理关系都已经确定好了,这叫静态的,静态的啊。
06:09
这是静态代理。代理他的。缺点和优点呢,我们来说一下静态代理啊静态代理。啊,我们来说它的第一个吧,说它的优点,优点呢就是容易理解。啊,容易理解呢,使用呢还是比较方便的,最大的优势就是容易理解,它这种关系呢,在确立的时候,在实现的时候呢,它比较好理解,和我们的开发的一些思路呢,也比较的切合。方便,这是它的优点,然后说他缺点。缺点呢,就是说在你的代理比较多的时候啊,或者说你的代理的这个目标,这么说吧,就是说在这个目标类比较多的时候。
07:09
会产生。会产生呢,大量的这个代理类,这是一个问题啊,还有就是说呢,当你的这个接口。改变时。改变时,它所影响的这个目标类和这个代理类它比较多呀,都需要修改,影响面呢比较大,这是它的缺点啊,所以呢,为了解决这个缺点的问题啊,我们还有一种方式。第二种方式呢,就是今天要讲的,它叫做动态代理端,这个概念呢,我们上次课你提了一下动态代理,他就说呢,使用反射机制啊,使用反射机制在程序的执行中。
08:07
啊,直通中。创建代理类对象创建代理类对象。好测点对象。这就完事了,通过反射机制来创建这个带类对象,它的这个特点就是说呢。不用啊,不用去创建类文件,这是一个第二个呢,就是说呢,我们代理的这个目标类是活动的,哎,是可设置的啊,这是它的一个特点。使用反射机制创建对象。过程中你不用创建这个带类的文件。静态中是创建它吗?动态中不用不用创建它,而且呢,这个代这是活动的,是可设置的,静态中这是固定的,而动态中这是活动的,也就是说你可以设置不同的这个目标类,给不同的目标创建代理。
09:15
这是它的一个最大的一个特点啊,动态的用的是反射机制来创建我们的代理对象。而不用呢,写我们的这个类文件,而且你所带的这个目标呢,是活动的,是可以设置的,这样你可以很灵活的给不同的目标随时创建代理。好,那我们说它的特点吧,来说第一个就是说我们不用啊,不用创建代理类。不用算带类啊,这是第一个,第二个就是说呢,我们可以给不同的目标随时创建代理。
10:08
目标,随时创建代理。行,上节课呢,我们就讲到这儿啊,这是复习一下,然后今天呢,我们主要讲的就是这个动画代理到底应该怎么实现啊,到底应该怎么实现。大家稍等一下啊,子公司的。行,那我们继续啊,我们继续。那么现在用的是一个动态代理啊,下面来看一下这个动态代理机制到底应该如何去实现它,如何去实现它啊。
我来说两句