00:00
Java设计模式中的。适配器模式。我们来看一下适配器模式,它是一个怎样的概念,首先呢,我们来看一个生活化的案例。就说现在呢,有这么一个情况,说你到泰国呢,要去旅游了,大家都知道不同国家它用的这个电源啊,就是我们这个电源的插座它是不一样的。你比如说在我们这个国内呢,这个三相电源是这样一个口,对不对,OK,这是中国大陆的。澳大利亚、新西兰也是用的这个。或者是用这种,我们国内就主要是这两种居多,对不对。那么如果你到泰国去了,到泰国去如果它的电源的这么一个插座呢,它是用的欧标也是这种口。两个圆孔,OK,那如果你拿到这个地方,假如你带的时候,你带的是这么一个,呃。电源电源,那这个地方你就插不进去了,同样这是一个什么呀,这是你用电脑的时候要用的一个电源适配器,那这是个三相的,你也插不到这个小圆孔里面去,怎么办呢。
01:13
好,在生活中其实特别好简单,你特别容易解决,你只要带上一个转,就是我们叫做多功能转接插头就可以了,他在这里相当于充当了适配器的一种。转换的作用,你比如说我这边插的时候是两个圆孔,我插进去了在泰泰国嘛,然后他这边输出来的时候呢,可以接我们的这这种插口就是电这个。电脑的这种三项的,或者是我们手机充电器的这个,呃,这个两个插口的都能用,因此在生活中我们可以看到,当我们这一个电源。的一个接口,插不到插座的时候,我们中间可以使用一个转换接头。
02:00
是不是在生活中就这样子的?那么同学们想,在我们的程序里面会不会出现这个情况呢?同样这个就是我们的适配器模式。那适配器模式呢?它叫adapter pattern,它是将某个类类的接口转成客户端期望的另外一个接口,表示主要的目的是为了做兼容。举个最简单的例子吧,比如说你这个有个A类。OK,这有个B类,OK,那么B类里边呢,假如它这里面有一个方法叫M1。假如叫M1 OK,那这个A类里面呢,假设你有一个方法叫做什么呢,叫做。M2吧。你M12想去调用M1的这个方法,但是呢,因为种种原因。你的这个参数可能不合适,或者说它输出的结果跟你想的不一样,但是功能大体相同,你不能直接调用M1怎么办呢?OK,我们就可以通过做中间写个适配器内。
03:08
叫adapter。啊,我写一个adapter,就是我们写adapt。切一个这样的适配器内,然后呢,我们m ma里面的M1M2这个方法呢,去调用它这里面的方法就可以了,就依赖于就说我这个A类呢,依赖于adapter,而adapter呢,再去依赖我们B就可以了,中间相当于他做了一个转换。那如果这个结果我们需要处理,比如说我要拿到这个结果,拿到这个M1的结果,但是我要处理一下,诶,我就可以把这个处理结果返回给M2,或者是参数个数不匹配,我在adapter进行一个转换就完事了,那么对于我们这个A来讲呢,我们好像是透明的使用到M。这个B类里面的M1方法,因为我这只我不管你这个B是什么呀,我只认adapter就行了。
04:03
啊,所以说这种思想还是比较好的,跟我们现实中生活中做这个转接头很像。OK,那其根本原因就是接口不匹配,造成两个不能一起工作的类可以协调的工作了,AB就可以协调工作。那么适配器模式呢,它是属于结构型的,所以说从这里可以看出来,它并没有产生什么新的对象,没有吧。它是处于一种结构的一种调整,让类与类之间可以协调工作,所以它是结构性的。同时我们要说到适配性模式呢,它有三种。具体上面有三种实现,一个叫内适配器类适配器模式,一个叫对象适配器,还有一个叫接口适配器,主要是他具体的实现形式不一样。那么这三种设计模式呢?我们都为大家。会做一个讲解。好的,这是它的基本介绍,朋友们,那现在我们来看一下适配器模式的工作原理,我说四点。
05:01
同学们可以看到适配镜模式呢,它是将一个类的接口转成另外一种接口,让其目的哈,就是让原本不兼容的类可以兼容使用。对,兼容使用,就好像刚才我们所说的,你带的电源在泰国用不了怎么办?你整一个转接口就行了。那么第二个从用户的角度来看呢?看不到被适配者,被适配者就是哪一个呢?比如刚才A要用B,但中间有个adapter。Adapt做一个转换,那么A在用用这个B的方法的时候,它是它是透明的,所以说我们这写的从用户的角度来看呢,被适配者是谁呢?就他他是被适配的,被是被适配的这个类,呃,但是我是看不到的,我直接认这个适配适配器类就可以了,因此他们解偶了。解耦了用户调用适配器转换出来的目标接口方法,适配器在调用被适配者的相关方法就是我调你。
06:03
或者说A,我A类依赖你,你再去依赖他就完事了。好的,那么用户收到的反馈结果呢,感觉只是和目标接口交互就行了,我这里画了一个图大家看。这个图呢,嗯,是这样子的,被适配者,被适配者呢,可能是被适配的类,也可能是个接口,也可能是个对象,我们在适配器模式里面简称s RC source。那么被适配器的类呢?我们就叫adapter。那么目标就是我最终得到的这个结果,其实其实就是相当于我去调这个被试被通过来调的呢,那相当于就是最终输出的结果,这个叫做目标。那有些同学老师,那你这举个例子,你能对照前面这个来来比较吗?我可以这样说,在这里被适配者就是我们这个店,就是这个插口,你可以理解成是这个插口,也就是说如果按照这个图来说,被适配者就他。
07:05
被适配的就他能能理解,那么我们这个适配器是谁呢?就相当于刚才老师讲的这个玩意儿谁呀,转接口能理解。啊,就相当于说这个就是我们的转接口,它是充当了一个被呃适配器的一个一个功能,那么目标是哪一个呢?OK,目标就是你这出来了,出来了以后,呃这这个电源就是这个口,就是相当于是出来的结果,然后呢,我们通过它就可以用了,或者通过它就可以用了。最后最后最后输出来的,准确的讲是这个东西啊。啊,就是这个是。插到这里面的嘛,输出来就这个。啊,相当于说最终这个目标输出来是变成了这样一个三项的,或者是两口可以插的这个,所以说我们可以认为这个适配器是这两个源头适配了它,然后输出来这个结果呢,是它我们就可以用什什么来用呢,就可以用我们这种电源来使用,对不对,好可以是这样一种感觉。
08:08
啊,就是输出来的目标呢,就是应该准确讲是这个东西啊,这个东西就是输出来他转,他把这个两口转,通过这个这个转接口输输出来的这个东西,明白吧,所以说你如果画的画的更细致一点呢,应该是呃,这样画比较合理一点,就把它看成两个部分。看成两个部分。啊,怎么怎么看两个部分呢,就好像认为是这是这是一个。大家理解我的意思吧,就是说被适配好像是这块这个口出来的是哪一块呢?出来的就是我们这个口。出来的就是这个口啊,这样理解是更准确一点的。啊,就是相当于说你两个口,呃,我我用这个两个口接到你这个电源了,那你在这边适配完了过后,给我给我看到的是三项的,或者是这这个两个口的这种这这种接口。
09:06
好好,你明白这意思吧,啊,应该是这样理解更合理一点,然后呢,你出了这个接口过后呢,我就可以用什么来使用呢,就可以让我的这个来使用它,就是说相当于是这样子的,我就看你。我就看你这个口,而你这个口呢,是通过你内部的。就是你这个呈现出来是个口嘛,但里面肯定还人家还有一些结构吧,对不对,里面还肯定就是说这个适配器里面肯定还有一个一个一个结构,好然后这边呢,它是被适配者呢,是用它来跟它关联的,好大致就这么一个意思了,好这就是适配器模式的一个工作原理。那同学们想啊,如果我们这样去看呢,大家可能会觉得太抽象了,下面呢,我们来举一个实际的案例来给大家讲解适配器模式是怎么使用的。好呃,案例呢,我们在下一个视频为大家讲解。
我来说两句