Sobes.tech
Junior — Middle

Podes explicar o conceito de delegação na linguagem Kotlin e sua aplicação?

sobes.tech IA

Resposta da IA

No Kotlin, a delegação é um mecanismo que permite transferir a implementação de uma interface ou propriedade específica para outro objeto, em vez de implementá-la diretamente na classe. Isso ajuda a evitar duplicação de código e simplifica a composição.

O exemplo mais comum é a delegação de propriedades usando a palavra-chave by.

Exemplo de delegação de propriedade:

class User {
    var name: String por Delegates.observable("") { prop, old, new ->
        println("A propriedade ${prop.name} mudou de $old para $new")
    }
}

Também é possível delegar a implementação de uma interface:

interface Printer {
    fun print()
}

class RealPrinter : Printer {
    override fun print() {
        println("Impressão do documento")
    }
}

class Manager(printer: Printer) : Printer by printer

fun main() {
    val realPrinter = RealPrinter()
    val manager = Manager(realPrinter)
    manager.print() // a chamada é delegada ao realPrinter
}

Essa abordagem permite dividir responsabilidades e reutilizar código sem herança.