一、介绍
适配器模式主要解决两个类(接口)不兼容的问题。
把源类(接口)转换成目标类(接口)。
二、应用场景
目前接触到最多的场景是自己的框架有统一的接口回调,在 使用某些已有组件的方法时,该组件接收的接口是另外的。
此时需要使用适配器,把我的接口转换成组件的接口。
三、例子
3.1原接口和目标接口
/**
* 目前框架传递过来的抽象
* 可以是接口,也可以是抽象类
*/
interface Source {
fun action1(): Int
fun action2(): Int
}
/**
* 目标组件的接口
*/
interface Target {
fun handle1()
fun handle2()
}
3.2适配器
/**
* 将source转换成target
* 这里是持有source,也可以采用继承source的方式
*/
class Adapter(private val source: Source) : Target {
override fun handle1() {
source.action1() + source.action2()
}
override fun handle2() {
source.action2()
}
}
3.3测试代码
//传入souce,也可以正常调用接收target的moduleAFun
fun test(source: Source) {
moduleAFun(Adapter(source))
}
fun moduleAFun(target: Target) {
target.handle1()
}