Шаблон проектирования адаптера - типы отношений между ролями

Мне интересно узнать об отношениях (Агрегация, Состав) между различными ролями шаблона проектирования адаптера. У меня все еще есть немного путаницы по поводу ассоциации и агрегации. Я разместил диаграмму классов Адаптера ниже. Мне нужно знать, находится ли adaptee в агрегационных отношениях с адаптером.

Шаблон дизайна адаптера UML

Отношение агрегации определяется, как показано в следующем фрагменте кода. Я знаю, что агрегация не подразумевается в UML, но я вижу, что в адаптере и адаптере есть аналогичная реализация, как показано в приведенном ниже коде.

final class Car {

  private Engine engine;

  void setEngine(Engine engine) {
    this.engine = engine;
  }

  void move() {
    if (engine != null)
      engine.work();
  }
}

Может кто-нибудь объяснить, почему отношения между адаптером и адаптером не попадают в категорию агрегации.

1 ответ

Агрегация является частью отношений.
,
,

В дни до UML люди обычно были довольно расплывчаты в отношении того, что такое агрегация и что такое ассоциация. Независимо от того, расплывчаты они или нет, они всегда были несовместимы со всеми остальными. В результате многие разработчики моделей считают, что агрегация важна, хотя и по разным причинам. Таким образом, UML включает агрегацию, но практически без семантики. Как говорит Джим Рамбо: "Думай об этом как о модельном плацебо"

Цитируется из UML Distilled: краткое руководство по стандартному языку моделирования объектов, третье издание.

Таким образом, согласно определению, адаптер может не объединять адаптера. Другими словами, адаптер не может быть частично связан с адаптером.

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

Одна последняя вещь. Я всегда чувствовал некоторую неопределенность в отношении разницы между ассоциацией, агрегацией и составом, но после прочтения DDD Эриком Эвансом у меня появилось другое предположение, поэтому я написал статью на эту тему. Если вы хотите взглянуть на отношения в контексте.

Другие вопросы по тегам