1.场景

适配器模式可能是开发人员用的最多的一种设计模式,做后台开发你可能每天都在使用。只是不知道他的名字;现实中的适配器你应该不会陌生,新款的IQOO 8 pro手机充电器已经达到了120w,实际上充电器就是一个适配器,他的作用就是将家用220v的交流电转换为供手机可以充电使用的直流电。适配器可以理解为就是一个中间协调的工具。

适配器模式分为2种,类适配器(使用继承)和对象适配器(使用委托)

2.类适配器结构图

3.实现适配器模式

AlternatingCurrent相当于交流电,他有两个抽象方法,输出高电压和低电压。

DirectCurrent相当于直流电,同样也是2个方法,输出12V的直流电和6V的直流电。

Adapter相当于就是适配器,他的作用就是将交流电转换为直流电,供手机充电使用。Adapter通过实现交流电的方法,继承直流电,然后进行包装将交流电变成12V或者6V电压

测试结果如下,可以看到使用适配器进行转换的时候能够将交流电转换为12V的直流电或者6V的直流电。

通过上面的例子可以看到实际上是很受局限性的,例如我们现在不仅要将交流电转换为直流电而是无线电,此时由于使用了继承,在Java中是不支持类的多继承的,所以没办法进行扩展,那我们可以使用委托啊。下面就是使用委托实现适配器模式。

4.对象适配器结构图

同样AlternatingCurrent是提供输出电压。只不过自己是交流电不能供手机使用。

DurectCurrent是提供输出12V直流电。和6V的直流电。

Adapter作为适配器,将交流电转换为直流电,相比类适配器,我们使用的是委托,也就是在Adapter定义了一个直流电的成员变量。这样就能解决适配器不能转无线电了。如果要转无线电只需要再定一个无线电类的成员变量。

5.经常用到的适配器模式

在使用MyBtais-Plus的时候,sevice层的实现类,可以看到实现了service接口,同时继承了ServiceImpl,其中Service提供了基础的简单操作。比如我们要查询一个用户id为1的数据,实际上service有这个能力吗。显然依靠他是没有的,实际上我们是通过serviceImpl中的byId操作。而我们自己的service实现是不是有点类似于就是一个适配器呢。

适配器模式的优缺点

优点:

1.如果我们不使用适配器而是直接调用具体的实现,首先一旦具体的实现发生改变,所以调用具体实现的地方都得改更,当使用适配器后只需要更改适配器,所有的调用者无需变动。

2.其次对于开发者而言很多东西并不是一次开发,后期存在维护如果使用适配器那么相当于就是调用的现有的代码,这份代码肯定是已经经过测试的,一旦出现问题,那么我们也可以快速定位是适配器有问题。

缺点:

1.过度使用适配器会导致代码混乱,多处被包装。

3.设计模式--适配器模式(adapter模式)相关推荐

  1. 设计模式--适配器(Adapter)模式

    模式定义 将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 类图 应用场景 1.当你希望使用某些现有类,但其接口与你的其他代码不兼容时: 2 ...

  2. Java设计模式-适配器模式Adapter

    定义:"转换接口" 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 我理解的"一个类的接口&q ...

  3. java设计模式adapter_Java设计模式--适配器(Adapter)模式

    适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极.阴极 ...

  4. 趣谈设计模式 | 适配器模式(Adapter):如何让现存对象适用于新的环境?

    文章目录 案例:数据线转换器 适配器模式 "补偿"模式 总结 完整代码与文档 案例:数据线转换器 相信对于安卓用户,曾经或多或少都有着因为接口不适配而带来的苦恼.当你在更换手机时, ...

  5. 设计模式之adapter模式

    adaper模式的适用场景为:我们想复用一个已有的类,但是类的接口和复用环境不一致.比如我们要调用第三方的sdk,但是接口不能直接调用,这时可以使用adapter模式. UML图如下: 可以adapt ...

  6. 结城浩的《图解设计模式》设计模式之Adapter模式的理解

    书中举的电源适配器的例子,还有网上各种同类的例子,无法说服我. Banner类的两个方法,代表输出交流100伏,虽然外部调用的是Print接口的要输出12伏特的方法,但是实际还是调用PrintBann ...

  7. 浅谈设计模式之五——Adapter模式

    这一节开始谈谈结构型模式.结构型模式包括:**适配器.桥接.组成.装饰.外观.享元.代理模式**7种设计模式.这一节说一下适配器模式,适配器模式可以分为类适配器和对象适配器,类适配器其实就是多继承,一 ...

  8. 设计模式02——Adapter模式

    定义 适配器设计模式,顾名思义就是将适配器的作用总结抽象成为一种代码的组织方式,将现有的代码通过适配器进行适配,以满足项目对另外一个类或者接口的要求.换句话说就是将一个类的接口适配(包装/转换)成客户 ...

  9. C#设计模式——适配器模式(Adapter Pattern)

    一.概述 在软件开发中,常常会想要复用一个已经存在的组件,但该组件的接口却与我们的需要不相符,这时我们可以创建一个适配器,在需复用的组件的接口和我们需要的接口间进行转换,从而能够正常的使用需复用的组件 ...

最新文章

  1. [转帖]C#执行SQL脚本,读取XML文件
  2. ping 不通 华为三层交换机vlan_华为交换机常用的三种vlan划分方法,一文了解清楚vlan...
  3. 设计模式--状态(State)模式
  4. Oracle 内、外连接
  5. python和access哪个实用_access和python学哪个
  6. 前端基础-CSS的各种选择器的特点以及CSS的三大特性
  7. 垂直串联六关节机器人调试手册_不止下棋能赢你!新型协作机器人样样精通
  8. dedecms切换模板css,DEDECMS的模板的css的详细解释 -电脑资料
  9. 把语言环境变量改为英文
  10. yum在linux安装mysql数据库_linux安装mysql(yum安装,比较简单)
  11. python罗盘时钟代码,罗盘时钟(原创)
  12. 如何将两个PDF合并成一个?PDF合并方法
  13. 在linux系统中查看mysql版本_Linux系统下查看mysql版本的四种方法_MySQL
  14. 前端页面截图,指定区域截图
  15. 星广互动推出全球首个智能AR广告平台 重塑UGC视频广告价值
  16. CentOS 7 配置Ruby语言开发环境
  17. 时序动作检测SSAD《Single Shot Temporal Action Detection》
  18. 重新认识LODGroup
  19. spring-boot 深入学习
  20. 小学认识计算机说课ppt,小学信息技术《认识word》说课稿

热门文章

  1. Linux命令_pstree 显示进程树
  2. 中文搜索引擎技术揭密:网络蜘蛛
  3. Java 中标签的作用
  4. JVM调优-调优原则与思路
  5. 2019招聘计算机,2019银行招聘计算机试题(六)
  6. 常用Oracle分析函数大全
  7. 打印java代码执行时间
  8. 自走棋手游怎么用电脑玩 自走棋手游模拟器教程
  9. 【智能优化算法】基于免疫算法求解单目标优化问题附matlab代码
  10. 移动端excel导出_前端实现Excel导入和导出功能