我是靠谱客的博主 大气曲奇,最近开发中收集的这篇文章主要介绍java设计模式:适配器模式(类适配器和对象适配器)类适配器对象适配器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 类适配器
    • 代码
  • 对象适配器
    • 代码

类适配器

  • SDCard 是一个接口,代表了 SD 卡本身具有的功能
  • SDCardImpl 是一个具体的实现类,代表了 SDCard 一种具体的实现形式
  • TFCard 是一个接口,代表了 TF 卡本身具有的功能
  • TFCardImpl 是一个具体的实现类,代表了 TFCard 一种具体的实现形式
  • computer 只有一个读取卡中信息的接口,他必须接受一个 SDCard 类型的参数;也就是说 computer 只能接受 SDCard 中规定的数据规范
  • 但现在想让 computerTFCard 的内容怎么办呢?
  • 那我们就要用 SDAdapterTF 来将 TF 的数据以 SD 卡的规范给到 computer
  • 因此,我们就需要让 SDAdapterTF 继承 TFCardImpl,这一步骤的意义就是他的数据还是 TF 卡中的数据,但是又要让 SDAdapterTF 去实现 SDCard 接口规定的方法,其意义就是让他具有能被 computer 接受的资格。
    在这里插入图片描述

代码

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 这样 computer 通过 readSD 中传入一个 SDAdapterTF 就可以读到 TF 卡中的数据了
  • 因为 SDAdapterTF 继承了 TFCardImpl,因此 new SDAdapterTF 相当于 new TFCardImpl
  • 而因为 SDAdapterTF 实现了接口 SDCard,他就可以作为一个 SDCard 被放到 computerreadSD() 方法里面

对象适配器

在这里插入图片描述

  • 类适配器的问题是:SDAdapterTF 直接继承了 TFCardImpl 这样就导致了,如果 SDCard 不是以 interface 的形式出现,而是一个抽象类或者压根就不存在这个抽象类,而是 SDAdapterTF 需要直接继承 SDCardImpl 或者 SDCard 抽象类,那么由于 java 不能允许多继承,这个时候就没办法再去继承 TFCardImpl 了,因此类适配器本身要求比较苛刻。而对象适配器通过将 TFCard 接口进行聚合,把 TFCard 作为一个属性,进而获得其中的数据同时避免了继承 TFCardImpl;保留了珍贵的 继承 机会,完美地解决了上述问题,也避免了隐患。

代码

  • 只需要修改 SDAdapterTF 的代码和 Client 中的代码即可。
    在这里插入图片描述
    在这里插入图片描述

最后

以上就是大气曲奇为你收集整理的java设计模式:适配器模式(类适配器和对象适配器)类适配器对象适配器的全部内容,希望文章能够帮你解决java设计模式:适配器模式(类适配器和对象适配器)类适配器对象适配器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部