DelegationNa engenharia de software, o padrão de delegação é um padrão de design orientado a objetos que permite que a composição de objetos atinja a mesma reutilização de código que a herança, e serve como uma alternativa para obter o mesmo efeito da herança múltipla em linguagens que não a suportam. Na delegação, um objeto (equivalente a classe filho na herança) lida com uma solicitação delegando a um segundo objeto (o delegate(delegado) )(equivalente a classe pai na herança), para isso o primeiro objeto torna-se proprietário do segundo objeto para usar suas propriedades e métodos. O delegado é um objeto auxiliar, mas com o domínio original . Com uma linguagem que tenha suporte para delegação, isso é feito implicitamente, fazendo com que o Observe que este artigo usa "objeto de envio / objeto de recebimento" para os dois objetos, em vez de "objeto de recebimento / delegado", enfatizando quais objetos enviam e recebem a chamada de delegação, não a chamada original. DefinitionNa introdução "Gamma et al. 1994, Grady Booch" definiu o delegation como:
Ou seja ao invés de herdar as características da classe pai para a classe filho diretamente, a classe filho é adaptada para receber um objeto instanciado da classe pai para usar seus métodos, para que esses métodos fiquem disponíveis na classe filho é necessário redeclarar aquele método com o mesmo nome e dentro dele chamar o método do objeto pai. Exemplo
No exemplo abaixo (usando a linguagem de programação Kotlin ), a classe Window delega a chamada class Rectangle(val width: Int, val height: Int) {
fun area() = width * height
}
class Window(val bounds: Rectangle) {
// Delegation
fun area() = bounds.area()
}
Outro exemplo em Java // delegation
class RealPrinter {
// the "delegate"
void print()
{
System.out.println("The Delegate");
}
}
class Printer {
// the "delegator"
RealPrinter p = new RealPrinter();
// create the delegate
void print()
{
p.print(); // delegation
}
}
Suporte de linguagemAlgumas linguagens têm suporte especial para delegação incorporada.[3] Por exemplo, na linguagem de programação Kotlin, poderíamos escrever: interface ClosedShape {
fun area(): Int
}
class Rectangle(val width: Int, val height: Int) : ClosedShape {
override fun area() = width * height
}
class Window(private val bounds: ClosedShape) : ClosedShape by bounds
Ver também
Referências
Ligações externas
|
Portal di Ensiklopedia Dunia