
//Target
interface IText {
//Request()
fun getText(): String
}
//Adaptee
open class StringList {
private val rows = mutableListOf<String>()
//SpecificRequest()
fun getString(): String {
return rows.joinToString("\n")
}
fun add(value: String) {
rows.add(value)
}
}
//Adapter
class TextAdapter: StringList(), IText {
//Request()
override fun getText(): String {
return getString()
}
}
private fun getTextAdapter(): TextAdapter {
val adapter = TextAdapter()
adapter.add("line 1")
adapter.add("line 2")
return adapter
}
//Client
val adapter = getTextAdapter()
val text = adapter.getText()
//text: line 1
// line 2
println("text is $text")
| Преобразует интерфейс класса в другой интерфейс, ожидаемый клиентами. Обеспечивает совместную работу классов, которая была бы невозможна без данного паттерна из-за несовместимости интерфейсов. |