Делегация против агрегации против консультаций

StackOverflow https://stackoverflow.com/questions/3829763

  •  26-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

емкость

Марио

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

Другие советы

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

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

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

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

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

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

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

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

Вики: Делегация Сочинение Консультация

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top