适配器模式

适配器模式

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

适配器模式

适配器模式_第1张图片

生活中的适配器

朋友们,不知道你们在生活中,有没有遇到下面这样的一个场景
适配器模式_第2张图片
是的,我们必然会遇到类似的这种插头与插座不匹配的问题,而这样的问题也常常会使我们感到困扰.
因此,为了解决这一类问题,世界上又多了一样东西,那就是适配器

有了这个适配器,我们就可以通过它,将我们的插头与插座进行正常的接通了
话说回来,既然生活中有这种场景,那么我们的程序中,是否有应用这种模式的地方呢,答案是肯定的,那么接下来,我们就开始进入正题

适配器模式角色

适配器模式中有着4大角色:
Target:目标接口(可以是抽象类或接口),客户希望直接用的接口,这里可以理解为插头
Adaptee:适配者,但是与Target不兼容,这里可以理解为插座
Adapter:适配器类,此模式的核心.通过继承或者引用适配者的对象,把适配者转为目标接口,这里可以理解为上面的适配器,用来接通插头和插座
client:需要使用适配器的对象,这里当然就是程序中的调用方

适配器的应用

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

Adaptee

适配器模式_第3张图片
适配器模式_第4张图片

target

适配器模式_第5张图片

Adapter

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

适配器模式应用场景

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

你可能感兴趣的:(适配器模式)