- 定义:
将一个类的接口转换成客户希望的另一个类的接口,适配器模式使原本不兼容的类可以在一起工作。 - 概述:
主要功能是匹配转换,目的是复用已有的功能。适配器类里面也可以有自己的实现,并且适配器类是用对象的组合的方式来调用适配者中的实现。 - 实例(Kotlin语言)
以下是Duck接口(对应标准模式中的Target接口)
interface Duck {
fun quack()
fun fly()
}
以下是鸭子的实现类
class MallardDuck:Duck {
override fun quack() {
println("鸭子呱呱叫。。。")
}
override fun fly() {
println("鸭子正在飞。。。")
}
}
以下是火鸡(Turkey)的接口,对应标准模式中的Adaptee
interface Turkey {
fun gobble()
fun fly()
}
以下是火鸡的实现类
class WildTurkey:Turkey {
override fun gobble() {
println("咯咯叫")
}
override fun fly() {
println("能飞一小段距离")
}
}
以下是适配类,对应标准模式中的adapter
/**
* 火鸡适配器,将火鸡适配成鸭子
*/
class TurkeyAdapter(val turkey: Turkey):Duck {
override fun quack() {
turkey.gobble()
}
override fun fly() {
for (i in 0..5) {
turkey.fly()
}
}
}
以下是测试类及结果
fun main(args: Array<String>) {
val wildTurkey = WildTurkey()
val mallardDuck = MallardDuck()
val turkeyAdapter = TurkeyAdapter(wildTurkey)
println("MallardDuck begin .....")
textDuck(mallardDuck)
println("假鸭子 begin .....")
textDuck(turkeyAdapter)
}
private fun textDuck(turkeyAdapter: Duck) {
turkeyAdapter.quack()
turkeyAdapter.fly()
}
//运行结果
MallardDuck begin .....
鸭子呱呱叫。。。
鸭子正在飞。。。
假鸭子 begin .....
咯咯叫
能飞一小段距离
能飞一小段距离
能飞一小段距离
能飞一小段距离
能飞一小段距离
能飞一小段距离
Process finished with exit code 0
- 类图
如有错误,请留言更正,或进580725421群讨论,以免误导其他开发者!!!