Delegação em Kotlin
A delegação controla a alocação de poder / autoridade de uma instância para outra para qualquer objeto. Para implementações de classes e funções, as delegações podem ser usadas em relações estáticas e mutáveis entre elas. A implementação de herança em classes e funções pode ser alterada com a ajuda de técnicas de delegação e as linguagens de programação orientadas a objetos a suportam inatamente, sem qualquer código clichê. A delegação é usada no Kotlin com a ajuda da palavra-chave “por” .
Existem dois tipos de delegação presentes no Kotlin:
• Delegação explícita: Suportada por todas as linguagens orientadas a objetos e é feita passando um objeto delegado (aquele a ser implementado) para o objeto delegado (aquele que implementará o objeto delegado).
• Delegação implícita: Requer suporte em nível de idioma para o padrão de delegação.
Vamos discutir o conceito da delegação com a ajuda dos exemplos : Exemplo 1:
Como sabemos que em Kotlin, a herança nos fornece um relacionamento estático permanente entre objetos que não são mutáveis enquanto a delegação é, esse fato torna a delegação uma alternativa extremamente poderosa. Neste exemplo, usando a classe Newfeature, podemos implementar a classe base de delegação com novos recursos, delegando todos os seus membros públicos, ou seja, mymessage e messageline, e estamos usando essa implementação com a ajuda da palavra-chave “por”.
// Kotlin program to illustrate the
// concept of delegation
interface delegation
{
fun mymessage()
fun mymessageline()
}
class delegationimplementation(val y: String) : delegation
{
override fun mymessage()
{
print(y)
}
override fun mymessageline()
{
println(y)
}
}
class Newfeature(m: delegation) : delegation by m
{
override fun mymessage()
{
print("GeeksforGeeks")
}
}
// Main function
fun main()
{
val b = delegationimplementation("\nWelcome, GFG!")
Newfeature(b).mymessage()
Newfeature(b).mymessageline()
}
Saída:
GeeksforGeeks Welcome, GFG!
Exemplo 2:
Neste exemplo, temos uma classe base de delegação com valor val e método “fun message()”. Na classe Delegationimplementation, estamos atribuindo valor a esta “mensagem divertida” e, posteriormente, de outra classe, estamos usando esta implementação usando a palavra-chave “by” para adicionar uma nova instrução com o mesmo valor val;
// Kotlin program to illustrate the
// concept of delegation
interface delegation
{
val value: String
fun mymessage()
}
class delegationimplementation(val y: String) : delegation
{
override val value = "delegationimplementation y = $y"
override fun mymessage()
{
println(value)
}
}
class Newfeatures(a: delegation) : delegation by a
{
override val value = "GeeksforGeeks"
}
fun main()
{
val b = delegationimplementation("Hello!GFG")
val derived = Newfeatures(b)
derived.mymessage()
println(derived.value)
}
Saída:
delegationimplementation y = Hello!GFG GeeksforGeeks
Vantagens:
1. É um método flexível, poderoso e mutável.
2. Múltiplas interfaces podem ser implementadas com a ajuda das existentes.
3. É usado para adicionar novos recursos e valores às implementações atuais.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva