делегирование против агрегации против консультации - PullRequest
2 голосов
/ 30 сентября 2010

В чем разница между этими терминами, приведите, пожалуйста, небольшие примеры?

Ответы [ 3 ]

1 голос
/ 30 сентября 2010

Агрегация: с 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

Консультация Я ничего не знаю, извините

hth

Марио

Примечание. На самом деле я не компилировал приведенный выше код.

0 голосов
/ 20 июля 2015

Делегирование, агрегация и консультация не являются шаблонами проектирования. Эти понятия помогают нам описать шаблоны проектирования. для более

Композиция - это способ объединить простые объекты или типы данных в более сложный, то есть в единое целое. Композиции являются важным строительным блоком многих базовых структур данных

Агрегирование отличается от обычного состава тем, что оно не подразумевает владение. В композиции, когда владелец объекта уничтожается, также и содержащиеся объекты. В совокупности это не обязательно верно

Делегирование - это простая, но мощная концепция передачи задачи другой части программы. В объектно-ориентированном программировании он используется для описания ситуации, когда один объект назначает задачу другому объекту, известному как делегат

Консультация в объектно-ориентированном программировании происходит, когда реализация метода объекта состоит из отправки сообщения того же сообщения другому составному объекту.

wiki: Делегация Состав Консультация

0 голосов
/ 30 сентября 2010

Существует описание разницы между делегированием и консультацией здесь .

Казалось бы, то, что большинство людей называют делегированием, более правильно было бы отнести к консультациям.

Полагаю, что делегирование в более формальном смысле, описанном в ссылке, будет реализовано как базовый класс Abstract, делегирующий классу Concrete.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...