Паттерны / Структурные паттерны
image

//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 TextAdapterStringList(), 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")


Преобразует интерфейс класса в другой интерфейс, ожидаемый клиентами. Обеспечивает совместную работу классов, которая была бы невозможна без данного паттерна из-за несовместимости интерфейсов.