Delegación vs agregación vs consulta
-
26-09-2019 - |
Pregunta
¿Cuál es la diferencia entre estos términos, puede dar pequeños ejemplos por favor?
Solución
Agregación: de http://en.wikipedia.org/wiki/aggregate_pattern
En los patrones de diseño, un agregado no es un patrón de diseño, sino que se refiere a un objeto como una lista, vector o generador que proporciona una interfaz para crear iteradores.
El significado en breves elementos contiene 0 o más otros elementos de otro tipo.
public class MyAggregation
{
protected List<MyAggregates> aggregates = new List<MyAggregates>();
public void add( MyAggregate element )
{
aggregates.Add( element );
}
}
Delegado: de http://en.wikipedia.org/wiki/delegation_pattern
En la ingeniería de software, el patrón de delegación es un patrón de diseño en la programación orientada a objetos donde un objeto, en lugar de realizar una de sus tareas declaradas, delega esa tarea a un objeto auxiliar asociado
Lo que significa que alguna clase usa otro objeto para hacer algo.
public interface IExceptionHandler
{
void handle( string filename );
}
public class FileDeleteExceptionHandler : IExceptionHandler
{
public void handle( string filename )
{
File.Remove( filename );
}
}
public class MyExceptionHandler
{
protected IExceptionHandler exceptionHandler;
public MyExceptionHandler( IExceptionHandler theHandler )
{
this.exceptionHandler = theHandler;
}
public void handleException( string filename )
{
excpetionHandler.handle( filename );
}
}
O en C# Delegation puede solo referirse a una función delegada, ver http://msdn.microsoft.com/de-de/library/900fyy8e%28vs.80%29.aspx
Consulta No sé nada libre, lo siento
hth
Mario
Nota: En realidad no compilé el código anterior.
Otros consejos
Hay una descripción de la diferencia entre delegación y consulta. aquí.
Parece que lo que la mayoría de la gente se refiere como delegación podría referirse más adecuadamente a la consulta.
Supongo que la delegación en el sentido más formal descrito en la referencia se implementaría como una clase de base abstracta que delega a una clase concreta.
La delegación, la agregación y la consulta no son patrones de diseño. Son conceptos nos ayudan a describir los patrones de diseño. para más
Composición es una forma de combinar objetos simples o tipos de datos en uno más complejo, es decir, como una sola unidad. Las composiciones son un componente crítico de muchas estructuras de datos básicas
Agregación difiere de lo ordinario composición en eso no implica propiedad. En composición, cuando se destruye el objeto de propiedad, también lo son los objetos contenidos. En agregación, esto no es necesariamente cierto
Delegación es el concepto simple pero poderoso de entregar una tarea a otra parte del programa. En la programación orientada al objeto se usa para describir la situación en la que un objeto asigna una tarea a otro objeto, conocido como delegado
Consulta En la programación orientada a objetos ocurre cuando la implementación del método de un objeto consiste en un mensaje de envío del mismo mensaje a otro objeto constituyente.
wiki: Delegación Composición Consulta