适配器模式在现实生活中有很多用处,比如我们使用的USB接口,就是一个典型的适配器模式,
输入的很可能是手机的USB,鼠标的USB,键盘的USB,等等,然后电脑再通过适配器模式去适配一个个输入
适配器模式分三种,一种是类适配器模式,一种是对象适配器模式,还有一种是接口适配器模式
类适配器模式
interface SDCard{
fun readSD(): String
fun writeSD(msg: String)
}
class SDCardImpl : SDCard{
override fun readSD(): String {
return "sd card read a msg :hello word SD"
}
override fun writeSD(msg: String) {
println("sd card write msg : $msg")
}
}
class Computer{
fun readSD(sdCard: SDCard): String{
return sdCard.readSD()
}
}
interface TFCard{
fun readTF(): String
fun writeTF(msg: String)
}
open class TFCardImpl: TFCard{
override fun readTF(): String {
return "tf card read a msg :hello word TF"
}
override fun writeTF(msg: String) {
println("TF card write msg : $msg")
}
}
class SDAdapterTF: TFCardImpl(),SDCard{
override fun readSD(): String {
println("adapter read tf card")
return readTF()
}
override fun writeSD(msg: String) {
println("adapter write tf card")
writeTF(msg)
}
}
对象适配器模式
interface SDCard{
fun readSD(): String
fun writeSD(msg: String)
}
class SDCardImpl : SDCard{
override fun readSD(): String {
return "sd card read a msg :hello word SD"
}
override fun writeSD(msg: String) {
println("sd card write msg : $msg")
}
}
class Computer{
fun readSD(sdCard: SDCard): String{
return sdCard.readSD()
}
}
interface TFCard{
fun readTF(): String
fun writeTF(msg: String)
}
class TFCardImpl: TFCard{
override fun readTF(): String {
return "tf card read a msg :hello word TF"
}
override fun writeTF(msg: String) {
println("TF card write msg : $msg")
}
}
class SDAdapterTF(private val tfCard: TFCard):SDCard{
override fun readSD(): String {
println("adapter read tf card")
return tfCard.readTF()
}
override fun writeSD(msg: String) {
println("adapter write tf card")
tfCard.writeTF(msg)
}
}
接口适配器模式
interface SDCard{
fun readSD(): String
fun writeSD(msg: String)
}
class SDCardImpl : SDCard{
override fun readSD(): String {
return "sd card read a msg :hello word SD"
}
override fun writeSD(msg: String) {
println("sd card write msg : $msg")
}
}
abstract class Adapter: SDCard{
override fun readSD(): String {
return "adapter"
}
override fun writeSD(msg: String) {
println(msg)
}
}
class Computer{
fun readSD(sdCard: SDCard): String{
return sdCard.readSD()
}
}
interface TFCard{
fun readTF(): String
fun writeTF(msg: String)
}
class TFCardImpl: TFCard{
override fun readTF(): String {
return "tf card read a msg :hello word TF"
}
override fun writeTF(msg: String) {
println("TF card write msg : $msg")
}
}
class TFtoSD(private val tfCard: TFCard): Adapter() {
override fun readSD(): String {
println("adapter read tf card")
return tfCard.readTF()
}
}