Java设计模式之适配器模式(结构型模式)

定义:将一个类的接口转换成客户希望的另外一个接口。Adaptor模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

模式中的角色:

  • 目标接口(Target):客户所期望的接口。目标可以是具体的或抽象的类,也可以是接口;
  • 需要适配的类(Adaptee):需要适配的类或适配者类;
  • 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。

场景描述:现在很多的手机厂商都取消了3.5mm耳机接口,改为了TypeC接口。因此,若我们想将3.5mm的耳机插头插入手机的TypeC接口,则另外需要一个TypeC转换器。如图:

TypeC一端连接耳机后,就具有了耳机的功能(能够听歌),并且满足了TypeC插头的要求。

类适配器模式:

public class test {public static void main(String[] args) {Target adapter = new Adapter();adapter.TypeC();adapter.function();}
}
Adaptee:耳机,能够听歌,但其3.5mm耳机插头与手机的TypeC接口不匹配
class EarPhone{public void func() {System.out.println("能够听歌!");}public String plugType() {return "3.5mm耳机插头";}
}
//Target:将耳机的3.5mm插头转换为TypeC插头
interface Target{void TypeC();void function();
}
//Adapter:适配器继承EarPhone后具有了耳机的功能,同时提供了TypeC插头
class Adapter extends EarPhone implements Target{public void function() {super.func();}@Overridepublic void TypeC() {System.out.println(super.plugType() + "=>TypeC插头");}
}

对象适配器模式:

public class test {public static void main(String[] args) {EarPhone earPhone= new EarPhone();Target adapter2 = new Adapter2(earPhone);adapter2.TypeC();adapter2.function();}
}
Adaptee:耳机,能够听歌,但其3.5mm耳机插头与手机的TypeC接口不匹配
class EarPhone{public void func() {System.out.println("能够听歌!");}public String plugType() {return "3.5mm耳机插头";}
}
//Target:将耳机的3.5mm插头转换为TypeC插头
interface Target{void TypeC();void function();
}
//Adapter:直接关联被适配类,同时实现标准接口
class Adapter2 implements Target{private EarPhone earPhone;public Adapter2(EarPhone earPhone) {this.earPhone = earPhone;}@Overridepublic void TypeC() {System.out.println(this.earPhone.plugType() + "=>TypeC接口");}@Overridepublic void function() {this.earPhone.func();}}

Java设计模式之适配器模式(属于结构型模式)相关推荐

  1. Java设计模式笔记——七个结构型模式

    系列文章目录 第一章 Java设计模式笔记--七大设计原则 第二章 Java设计模式笔记--六个创建型模式 文章目录 系列文章目录 一.适配器模式 1.概念 2.类适配器 3.对象适配 4.缺省适配器 ...

  2. java设计模式(2) - 结构型模式

    1.适配器模式 将一个类的接口转成用户想要用的一种接口,适配器模式将一种接口兼容不能一起工作的那个类可以一起工作. 适用:1.想使用一个类,但是它的接口不符合:2.想创建一个可以复用的类,该类可以与不 ...

  3. java面试题31:结构型模式中最体现扩展性的模式是()

    java面试题31:结构型模式中最体现扩展性的模式是() A:装饰模式 B:合成模式 C:桥接模式 D:适配器 蒙蔽树上蒙蔽果,蒙蔽树下你和我 结构型模式是描述如何将类对象结合在一起,形成一个更大的结 ...

  4. 设计模式(三)结构型模式介绍及实例

    文章目录 一.适配器模式 1.1 适配器模式定义 1.2 适配器模式主要角色 1.3 适配器模式特点 1.4 适配器模式实现方式 1.4.1 类适配器模式 1.4.2 对象适配器模式 1.5 适配器模 ...

  5. 《设计模式详解》结构型模式 - 适配器模式

    适配器模式 5.2 适配器模式 5.2.1 概述 5.2.2 结构 5.2.3 类适配器模式 5.2.4 对象适配器模式 5.2.5 接口适配器模式 5.2.6 应用场景 5.2.7 JDK 源码 - ...

  6. 《设计模式详解》结构型模式 - 代理模式

    代理模式 5.1 代理模式 5.1.1 概述 5.1.2 结构 5.1.3 静态代理 5.1.4 动态代理 JDK 动态代理 JDK 动态代理分析 CGLIB 动态代理 5.1.5 三种代理的对比 5 ...

  7. JAVA设计模式第三讲:结构型设计模式

    设计模式(design pattern)是对软件设计中普遍存在的各种问题,所提出的解决方案.本文以面试题作为切入点,介绍了设计模式的常见问题.我们需要掌握各种设计模式的原理.实现.设计意图和应用场景, ...

  8. 设计模式(2)结构型模式

    结构型模式 结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效. 结构型模式: 适配器模式:用来把一个接口转化成另一个接口.使得原本由于接口不兼容而不能一起工作的那些类可以在一 ...

  9. 设计模式(四)结构型模式

    前言 结构型设计模式,主要研究: 主要有哪些场景使用结构型设计模式: 每种场景应该使用何种设计模式: 以程序中的功能为核心,研究程序功能的组织结构.所以这一章,我们要把"功能结构" ...

  10. 《设计模式详解》结构型模式 - 组合模式

    组合模式 5.6 组合模式 5.6.1 概述 5.6.2 结构 5.6.3 案例实现 5.6.4 组合模式的分类 5.6.5 优点 5.6.6 使用场景 完整的笔记目录:<设计模式详解>笔 ...

最新文章

  1. 编译与部署dubbo管控平台dubbo-admin
  2. 关于邮件服务器的原理
  3. 【原创】Kakfa metrics包源代码分析
  4. IT新人如何快速成长
  5. zcmu-1184(矩阵乘法)
  6. Acwing 236. 格鲁吉亚和鲍勃(博弈论妙题)
  7. Redis:07---Redis数据结构
  8. 自动化构建部署之Jenkins安装【Docker容器】
  9. 软件开发工程师应该具备哪些证书_智能展厅设计应该具备哪些特点?
  10. 25 年 IT 老兵零基础写小说,作品堪比《三体》| 人物志
  11. ajax send上传出错,AJAX + FormData 上传文件失败?
  12. Navi.Soft31.任务管理器(定时同步+数据采集)
  13. rk3399_android7.1 USB Type-A的配置
  14. spring cloud config-server 高可用配置中心
  15. Windows无法安装到这个磁盘,选中的磁盘具有MBR分区表的解决方法
  16. redis--ServiceStack
  17. 一次性能优化引发的思考
  18. vscode开发中绝对让你惊艳的插件!!!(个人在用) 持续更新。。。。
  19. 【高等数学】(底数>1和底数<1的)幂函数的图像
  20. 短视频怎么获得高流量?简单小技巧,让你的短视频被更多人看到

热门文章

  1. 百元级别的主动降噪效果怎么样?OPPO Enco W51超预期体验
  2. Python实用工具,turtle库,Python实现简易版时钟
  3. html中如何写不规则图形,CSS写三角形、五角形等不规则图形
  4. Android Studio更新后右上角一直提示analyzing
  5. 动态规划求解设备更新问题
  6. java面试mysql数据库常见问题_JAVA面试常见问题之数据库篇
  7. 机器人工程毕业设计☞外文翻译
  8. 2022年南京中级软件水平考试重点知识练习题及答案
  9. Attention 注意力机制
  10. 【Hadoop完全分布式】SSH 无密登录配置