00:01
适配器模式的注意事项和细节。我们同时呢,也把前面讲的适配器模式进行一个梳理,我们看一下。那么我们适配器模式呢?需要注意的有这么几点,第一点,三种命名方式对。那么根据它是怎么怎么来分这个所谓的类对象和接口适配器呢?主要是根据这个src是以怎样的形式给到这个adapter的。也就是说我们这个被适配器,被适配的这个类。它是以怎样的一个形式跟我们这个adapter进行一个关联的,或者说依赖的。那首先呢,如果是以类的方式给到的BG,我们是继承的方式,那么比如说我这个adapter是继承了你这个被适配的这个类,那么我们就称之为类适配器。如果是以对象的方式给到的,以对象方式给到,其实就是我们所说的什么呀,持有及什么呢,就是我们前面讲的像这种组合或者是。
01:04
或者是叫做这个聚合的方式给到的啊,我们前面是以聚合的方式给的,对吧?还有接口适配器,接口方式,接口呢,如果是以接口方式给到的,比如说在adapter里面将src做一个接口,那么并实现它这个我们就叫接口适配器,所以说他们呢,类对象接口主要是看以怎样一种方式。把这个被适配的类给到了,或者说关联到了我们adapt里面去。从此呢,就产生三种方式,第三点模式最大的作用还是它是将什么呢?原本不兼容的接口融合在一起工作。对不对,其实他相当于做了一个中转。相当于做了一个中转,在实际概中实现起来不拘于我们讲解的三种经典形式,有可能还有其他的方式,就实现起来形式还是多样的。形式还是多样的,OK,那关于适配器模式的注意细节我们就聊到这,同时呢,我们现在花一点时间把适配器模式的。
02:10
这个内容我们梳理一遍来看一看,同时把笔记呢也给大家梳理一下,来走一个。这讲的是什么呀?适配器模式对不对?好适配器设计模式。OK,适配器设计模式。那么适配器设计模式我们还是由一个生活中的案例引起了。对这个适配器设置模式的思考。这是一个现实生活中案例,就是我们到泰国或者到其他国家去旅游,那么一旦旅游呢,我们就会发现可能。人妖的这个插座你直接插是插不上去的,怎么办呢?我们就有这种多功能转换接口,这个就相当于在在我们的编程里面,就是我们适配器的适配器类的这样来的。
03:07
那提出了一个实际需求以后呢,我们就对适配器。他的。呃,这个概念做了一个基本的介绍,所以说我们进入到基本介绍。对,这里呢,我们重点阐述了适配器的它的一个分类,还有它的一些特点,比如说。呃,它主要的作用是做兼容。是吧,然后呢,它有三种形式。累。对象和接口是吧,这是做了一个基本介绍,做完基本介绍过后呢,我们对适配器的工作原理是不是做了一个介绍啊。对,我们对适配器的工作原理做了一个说明,然后呢,我们在这里画了一张图。这张图呢,比较形象的说明了我们适配器的工作原理,怎么样做的呢?它是这样子的。首先呢,这儿有一个被适配的类,被适配的者,被适配者我们讲了可能是类,也可能是接口。
04:06
啊,不能也可能是对象。所以说呃,如果是呃,根据你不同的形式,你自己有有所区别,然后呢,这是我们适配器类。然后这是我们的目标输出来。就是达到一个无缝接轨,就是我调你的适配器,相当于调用了被适配者,是这么一个流程,好把这个图画过来。好,那把工作原理说完了以后,是不是我们就讲实际的代码了,我们先讲的是哪一个呢?类适配器。我们先给同学们讲的是类适配器。类适配器,我们这里先对类似配做了一个说明,然后呢对它的做了一个应用案例来走一下。首先我们做了一个基本介绍,然后讲它的应用实例,这边呢有一个流程。好,把这个图拿过来看一下,那现在我们首先画了一个类图。
05:02
针对这一个降压问题,比如说220伏。225我们要装降成五伏。那这个时候呢,我们首先画了一个类图,把这个类图拿过来看一下在哪里,在这里还有印象吧,保存一下。这是我们的这张图。这张图呢,尤其要领会到它是类。类适配器说这这是一个继承的关系。这是一个继承的关系,那具体的代码呢,我们也拉过来。那代码因为比较多哈,呃,我看看怎么拿这个代码还是不行,呃,不能一个个的拷贝太多了,那怎么办呢?还是按我们以前的规矩怎么样。我们把它打包放这就可以了,这是类适配器的源码。没问题吧,同学们里面呢,注释都有。我把源码放到这儿。因为要一个一个的粘贴,这个太多了,好吧,我就放这了。这是它的源码。然后这个类适配器讲完了过后呢,我们对类适配器它的注意细节和器注意事项和细节做了一个说明。
06:08
做了一个说明,OK。类适配器讲完了过后,我们紧接着又讲了什么呀,对象适配器,所以说我们先对对象适配器呢做了一个介绍。放这来。对象适配器,我们先做了一个介绍。说了三点。对象适配器哪三点捋一捋。所以说我们从这个对象适配器,我们可以看到,它是根据呃,叫做合成复用原则,将我们的。呃,这个用关联关系来替代了基层关系,我们这个地方用的是哪一个关联关系呢?聚合。还记得吧?聚合。这个关联关系聚合。OK,那把这个讲完了过后呢,我们就直接用对象适配器对前面代码进行了一个改进,是这样子吧,同学们来,走到这来。
07:05
放这来好。这是我们的应用案例说明。还有他的代码屡屡。那具体来说,我们应该怎么做的呢?这是应用实例说明,这类图我们把类图给大家截过来。类图是在eclipse里面画的,在哪里呢?在这。是不是这张图啊,啊是这张图,通过这张图我们发现呢,它是有一些变化的。哪里体现出来呢?主要是在这体现出来的。聚合。OK。好,这是类图代码,同样道理,因为太多了,我们就没有办法。对吧,没办法一个个的去考了把这个对对象适配器。压一个包,直接把它放在我们的笔记中。大家要看语言吗?很简单啊,双击就可以看了。好的。那这个。呃,这个做完了过后呢,我们紧接着又说明了对象适配器的。
08:05
一些特点和细节。是不是在这儿放着呀。捋一下这个思路。放这就可以了。好的,然后对象适配器讲完了过后呢,我们紧接着给大家讲了什么呀。接口适配器。接口适配器首先做了基本的介绍,就是什么是接口适配器?看一下。接口适配器的基本介绍。接口适配器呢?我们又叫有些地方也直接叫做嗯,缺省适配器模式。缺省适配器模式,因为它有很多方法呀,是空实现,它是它的核心思想,这样子的。这是他的核心思想。它的核心思想是,呃,如果我们不需要实现接口的全部方法。怎么办呢?我们先设计一个抽象类。
09:00
让这个抽象类去实现这个接口。对吧,然后每个接口的方法呢,提供一个默认实现及空方法。空方法。那么抽象类的子类。其实这个子类是以匿名子类的方式来实现的,然后可以有选择的覆盖某些方法。OK,这是。他的这么一个介绍,那这个介绍完了过后呢,我们就举了一些案例来说明这个适配器的特点,所以说我们先举了第一个案例,就是安卓里面的一段源代码。对吧,在这里呢,我们总结了两点。OK。好,我把代码呢给大家放一下。把代码放下。Okay。在这整理一下,那代码呢,就是在这吧。其实这这边就是两段代码,一段四个代码放这来。对吧,还有一段代码呢,就是同学们看到的这段代码。
10:00
诶,这段代码。在这里面我们可以看到,就是在这一个的时候,他。四个方法,就是这个空空实现。好,我们把这个缩小一点。好,放到上面去就可以了。那这边呢,我们说了,它下面还有这么几几个地方哈,就是使用的时候是怎么使用的,使用的时候就是呃,大同小异啊,大同小异跟刚才咱们讲的这个思路是一样的,好,这是我们的第三点。对吧,这是我们第三点。这是第四点。好,这是它的一个接口。那这个讲完了以后,这个图我就不截了,这个图我就诶得截一下。截一下这个图。好在这有一个接口小图。对吧,然后这边呢,也是一样。也是一样好。把它放过来。搁这儿。
11:00
把这个放小一点,放到同一行去好的,那这个讲完了过后,我们又担心有些同学呢,可能没有听懂是吧,所以说我们又写了一个案例,我记得写了一个案例,好把这个第五个也拉过来啊,第五个也拉过来。这是我们第五一个,它是怎么具体使用的,是用匿名啊,匿名的内部类来完成的。在哪里呢?在这儿。针对这个。文字进行了一个说明。说完了过后,我们紧接着呢。呃,这我记得应该还有一段源码,还有我们这写的一段源码,我们来过来看一下。我记得是在哪写的呢?呃嗯,是在哪里写的,我看看啊。Adapt接口是这。是吧,针对这地方我们也写了一个类图,我们说它大体上是这样实现的,这是它的一个类图。是是这个类图吧,同学们。他的一个类图。我们这还举了一个案例,案例说明。
12:03
案例说明就是第六了。对,这有一个类图。这样子针对这个类图呢,我们有有有一些源码,源码来来对他进行一个说明,首先呢。我们这儿有个抽象。呃,先说这个接口。对吧,这个里面有四个方法,我把这个源码给他拷过来,好同学们,因为这这里面的这这段演示代码比较少,咱就可以把它拿过来。然后这是它的一个抽象,抽象类其实是一个adapter。摆放这,然后调用的时候,我们怎么调的呢?在C里面我们是这样调的。是不是在这里用了一个匿名的子类,对不对,把它实现了。OK,放这那这个做完了以后呢,我们又讲什么呢?我们讲了适配器在这个源码中的一个使用。对吧,在源码中的使用好捋到这来。
13:02
内容还是比较多的。这是第二点,那源码里面呢,我们分成这么几几个步骤来进行讲解的,第一个呢,我们说了是在spring mvc里面叫hander adapter使用了SP模式,然后这一个流程回顾我就不去回顾了。那是为什么要使用这个handleer呢?这些说明主要是为了提高,就是这样子的,我们就就说使用了这个模式过后,我们就不违背OCP了,如果你不用的话,你可能里面一堆就是if else。所以说在这种情况下,我们选用了这一个适配器模式,那适配器模式这边呢,我们有这个源码的说明。对吧,这边有源码,说明这源码呢,我们也用给他追了一遍,这里就不再追了,好吧。好的,那源码。源码这一块的说明呢,我就直接把这个幻灯片这一小块核心的部分给他拿过来,大家一看就知道了。
14:00
OK。呃,大体来说是怎样来说的呢?这样子的是吧,在这个地方有一个。方法里面去返回我们的adapter。啊,OK。这个地方就不再赘述了,因为在讲的过程中已经说的很清楚了。好,那在这个地方呢,我们为了加深大家的印象,我们又自己动手写了一份。我们自己动动手写了一份control,就是SMVC的一个源码,来模拟模拟它的一个请求的处理,对吧,这样子的。好,这是它的一个说明。那我们把这一段模拟的源码呢,也给大家拿过来板述一下,具体来说怎么做的呢?首先这有个类图,我们先把类图拿过来。模拟的过程是在这模拟的。是吧,Spring mvc。这是我们在模拟的时候画的。这一个图。这个类图。
15:00
OK,大家可以看到这边有两接口。两接口,然后呢,Adapter去使用到我们的这个control中间,这个使用者不需要变化,当我们增加一个control的时候,或者是adapter时候呢,这里面不需要变化,好这就OK了。好,把这个也粘过来,这是它对应的类图啊,源码我就呃也也就嗯,没有办法一一步一步的粘了哈,同样道理,我们把这个源码呢,从这给它复制过来就行了,从哪复制哈,看一下。因为这个笔记给大家做细一点呢,以后呃,同学们要看源码就要看我们笔记,就非常轻松。对,我把它放过来。这是我们手动写的模拟spring mvc请求,并且使用到我们适配器的一段源码。这是源码说明。OK。好,当我们把这一个讲完以后呢,我们就给大家再整理整理,说明了一下我们适配器模式的注意事项有哪些,是这样子吧,同学们。
16:06
好,放这就可以了。这是这一点诶。这点好。是我们的CTRL2。然后这边呢,有几点说明,大家要有一个印象,放这就可以了。好,大体来说呢,就是命名方式,命名方式是根据以这种怎样一种形式把我们这个被适配的这个类给到我们adapt的,从而分,从而把它分成了类接口。对象适配器。好的,呃,还有一点就是在实际开发中呢,也有可能有些适配器。他跟我们标准的写法不太一样。那么大家要注意它的一些区别啊,注意它的区别就是它的核心思想。核心思想理解了就可以了,说白了就是有一个AA类要去运用这个B类的一些方法,但是呢。不能直接用。
17:00
所以说中间做了一个缓缓冲层,或者叫一个转换层adapter。Doctor。好,然后呢,A去用它呢用B,它中间做了一个转换,就这个意思。好,同学们,那关于我们这个适配器的内容呢,就给大家聊到这里,而且呢,我们把内容也梳理了一遍,大家印象应该会比较深刻一点,好的,关于这一讲,我们就到这里。
我来说两句