概述
文章目录
- 类适配器
- 代码
- 对象适配器
- 代码
类适配器
SDCard
是一个接口,代表了SD
卡本身具有的功能SDCardImpl
是一个具体的实现类,代表了SDCard
一种具体的实现形式TFCard
是一个接口,代表了TF
卡本身具有的功能TFCardImpl
是一个具体的实现类,代表了TFCard
一种具体的实现形式computer
只有一个读取卡中信息的接口,他必须接受一个SDCard
类型的参数;也就是说computer
只能接受SDCard
中规定的数据规范- 但现在想让
computer
读TFCard
的内容怎么办呢? - 那我们就要用
SDAdapterTF
来将TF
的数据以SD
卡的规范给到computer
- 因此,我们就需要让 SDAdapterTF 继承 TFCardImpl,这一步骤的意义就是他的数据还是 TF 卡中的数据,但是又要让 SDAdapterTF 去实现 SDCard 接口规定的方法,其意义就是让他具有能被 computer 接受的资格。
代码
- 这样
computer
通过readSD
中传入一个SDAdapterTF
就可以读到TF
卡中的数据了 - 因为
SDAdapterTF
继承了TFCardImpl
,因此new SDAdapterTF
相当于new TFCardImpl
- 而因为
SDAdapterTF
实现了接口SDCard
,他就可以作为一个SDCard
被放到computer
的readSD()
方法里面
对象适配器
- 类适配器的问题是:SDAdapterTF 直接继承了 TFCardImpl 这样就导致了,如果 SDCard 不是以 interface 的形式出现,而是一个抽象类或者压根就不存在这个抽象类,而是 SDAdapterTF 需要直接继承 SDCardImpl 或者 SDCard 抽象类,那么由于 java 不能允许多继承,这个时候就没办法再去继承 TFCardImpl 了,因此类适配器本身要求比较苛刻。而对象适配器通过将 TFCard 接口进行聚合,把 TFCard 作为一个属性,进而获得其中的数据同时避免了继承 TFCardImpl;保留了珍贵的 继承 机会,完美地解决了上述问题,也避免了隐患。
代码
- 只需要修改 SDAdapterTF 的代码和 Client 中的代码即可。
最后
以上就是大气曲奇为你收集整理的java设计模式:适配器模式(类适配器和对象适配器)类适配器对象适配器的全部内容,希望文章能够帮你解决java设计模式:适配器模式(类适配器和对象适配器)类适配器对象适配器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复