适配器模式

适配器模式

  • 适配器模式
  • 生活中的适配器
  • 适配器模式角色
  • 适配器的应用
    • Adaptee
    • target
    • Adapter
  • 适配器模式应用场景

适配器模式

在这里插入图片描述

生活中的适配器

朋友们,不知道你们在生活中,有没有遇到下面这样的一个场景

在这里插入图片描述

是的,我们必然会遇到类似的这种插头与插座不匹配的问题,而这样的问题也常常会使我们感到困扰.

因此,为了解决这一类问题,世界上又多了一样东西,那就是适配器

在这里插入图片描述

有了这个适配器,我们就可以通过它,将我们的插头与插座进行正常的接通了

话说回来,既然生活中有这种场景,那么我们的程序中,是否有应用这种模式的地方呢,答案是肯定的,那么接下来,我们就开始进入正题

适配器模式角色

适配器模式中有着4大角色:

• Target:目标接口(可以是抽象类或接口),客户希望直接用的接口,这里可以理解为插头

• Adaptee:适配者,但是与Target不兼容,这里可以理解为插座

• Adapter:适配器类,此模式的核心.通过继承或者引用适配者的对象,把适配者转为目标接口,这里可以理解为上面的适配器,用来接通插头和插座

• client:需要使用适配器的对象,这里当然就是程序中的调用方啦

适配器的应用

相信大家都用过Slf4j来打印程序中的日志,而在程序中,打印日志的功能并不是Slf4j来实现的,而是通过底层的Log4j或者LogBack来实现的,Slf4j只负责对他们进行调用.

Adaptee

在这里插入图片描述

在这里插入图片描述

target

在这里插入图片描述

Adapter

在这里插入图片描述

上面虽然我们只实现了Log4j的适配调用,但是我们可以看到,我们只需要改一下适配器中的配置,将Log4j转换成LogBack即可完成对LogBack的适配调用

适配器模式应用场景

一般来说,适配器模式可以看作⼀种”补偿模式”,用来补救设计上的缺陷.应用这种模式算是”无奈之举”,如果在设计初期,我们就能协调规避接口不兼容的问题,就不需要使用适配器模式了,所以适配器模式更多的应用场景主要是对正在运行的代码进行改造,并且希望可以复用原有代码实现新的功能.比如版本升级等.

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/6a2b465aa4.html