Foros del Web » Programación para mayores de 30 ;) » Java »

Consulta: Composición y Delegación

Estas en el tema de Consulta: Composición y Delegación en el foro de Java en Foros del Web. Quería saber si Composición y Delegación son los mismo, o una usa a la otra? por que no me queda claro si son lo mismo ...
  #1 (permalink)  
Antiguo 16/02/2010, 11:14
 
Fecha de Ingreso: marzo-2007
Mensajes: 302
Antigüedad: 17 años, 1 mes
Puntos: 2
Pregunta Consulta: Composición y Delegación

Quería saber si Composición y Delegación son los mismo, o una usa a la otra? por que no me queda claro si son lo mismo o no. Gracias!
  #2 (permalink)  
Antiguo 16/02/2010, 12:04
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 15 años, 5 meses
Puntos: 13
Respuesta: Consulta: Composición y Delegación

Hola!
La respuesta es NO son lo mismo.
La Delegación es un patrón de diseño (Delegation) y da soporte a la Composición.
Digamos que la delegación es una abstracción que da soporte a la composición, es un patrón a través del cual una clase muestra un comportamiento pero delega la responsabilidad de implementar ese comportamiento a otra clase.

Por lo general se utilizan interfaces para realizar una delegación.

por ejemplo:

interface MyInterface{
public void myMetodo();
}

class A implements MyInterface{
public void myMetodo(){
//hacer algo
}
}

class B implements MyInterface {
private MyInterface delego = new A();

public void myMetodo(){
delego.myMetodo();
}

//otros métodos
}

como ves B expone un comportamiento (myMetodo) pero en realidad delega la responsabilidad sobre la clase A.
La utilización de las interfaces es para separar la definición de la implementación de manera que B podría delegar esa resposabilidad sobre cualquier otra clase que implemente MyInterface...

No sé si me explico...

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:40.