В чем разница между этими условиями, можете ли вы дать небольшие примеры?Делегация против агрегирования против консультации
ответ
Агрегация: От http://en.wikipedia.org/wiki/Aggregate_pattern
В шаблонах проектирования, агрегат является не шаблон дизайна, а скорее относится к объекту, такой как список, вектор, или генератор, который обеспечивает интерфейс для создания итераторы.
В нескольких словах содержит 0 или более элементов другого типа.
public class MyAggregation
{
protected List<MyAggregates> aggregates = new List<MyAggregates>();
public void add(MyAggregate element)
{
aggregates.Add(element);
}
}
Делегат: От http://en.wikipedia.org/wiki/Delegation_pattern
В программной инженерии, шаблон делегация шаблон проектирования в объектно-ориентированном программировании, где объект, вместо того, чтобы выполнять одну своих заявленных задач, делегатам, что задача связанного вспомогательного объекта
Это означает, что какой-то класс использует другой объект для чего-то.
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);
}
}
Или в C# делегации может просто сослаться на функции делегата, см http://msdn.microsoft.com/de-de/library/900fyy8e%28VS.80%29.aspx
Консультация я не знаю ничего от, извините
НТН
Марио
Примечание: Я сделал на самом деле не компилировать код выше.
Существует описание различия между делегацией и консультацией here.
Похоже, что то, что большинство людей называют делегацией, может быть более правильно передано на консультацию.
Я полагаю, что делегация в более формальном смысле, описанном в ссылке, будет реализована как абстрактный базовый класс, делегирующий класс Concrete.
Делегация, агрегирование и консультации не являются образцами дизайна. Они представляют собой концепции, которые помогают нам описывать шаблоны проектирования. for more
Состав является способ объединить простые объекты или типы данных в более сложную т.е. как единое целое. Композиции являются важным строительным блоком многих базовых структур данных
Aggregation отличается от обычного состава в том, что она не подразумевает владение. В композиции, когда объект-владелец уничтожается, также находятся объекты, содержащиеся в нем.В агрегации это необязательно.
Делегация - это простая, но мощная концепция передачи задачи другой части программы. В объектно-ориентированном программировании он используется для описания ситуации, когда один объект назначает задание на другой объект, известную как делегат
консультации в объектно-ориентированном программировании происходит при реализации методы объекта состоит из отправки сообщений из то же сообщение другому составляющему объекту.