适配器模式是一种结构型设计模式,其主要目的是让原本由于接口不匹配而无法一起工作的类能够协同工作。适配器模式通过引入一个适配器类来连接两个不兼容的接口,使它们能够协同工作。
以Slf4J为例,MyBatis定义了一个自己的日志接口 Log,而Slf4J、log4j2等各自有不同的日志接口,它们之间存在不同的方法和级别。适配器的作用就是将MyBatis的 Log 接口适配到不同的日志框架上,使得MyBatis可以与任何支持的日志框架集成而不需要修改自己的代码。
适配器模式通常包括三种角色:
-
目标接口(Target): 需要被适配的接口,这是适配器模式中的目标。
Log接口就是目标接口。 -
被适配者(Adaptee): 需要被适配的类或接口,也就是现有的、需要被适配的对象。
Slf4J、log4j2 等日志框架的接口就是被适配者。
-
适配器(Adapter): 适配器类,它实现了目标接口并包含一个对被适配者的引用,通过对被适配者的调用来实现目标接口。
适配器的角色可以是 MyBatis 中定义的具体的日志适配器,通过实现
Log接口,并在内部调用 Slf4J、log4j2 等日志框架的相应方法,以实现适配。
通过适配器模式,MyBatis 就可以通过不同的适配器与不同的日志框架进行集成,而不需要修改 MyBatis 的核心代码。这样,系统的灵活性得到了增强,可以更容易地适应不同的日志框架的变化。