GOF предшествует UML
Он использует вариант OMT, нотацию, изобретенную J.Rumbaugh, до того, как она была объединена с UML:
- Текущая терминология UML — «ассоциация». OMT провел тонкое различие между двунаправленными «ассоциациями» (см. сноску, Приложение B GOF) и однонаправленными «знакомствами» (реализованными со ссылкой). В современном UML и то, и другое будет ассоциациями. Последнее может быть выражено с помощью навигационных ассоциаций, хотя UML не зависит от реализации.
- Более того, хотя OMT и более ранняя версия UML использовали белый ромб для представления отношений часть-целое,
Сам Дж. Рамбо назвал эту общую агрегацию «моделирующим плацебо». Начиная с UML 2.0, UML сохранил белый ромб, но больше не определяет для него никакой семантики. Таким образом, белый ромб или не ромб в конечном итоге имеют одинаковую семантику в UML, и предпочтение следует отдавать более простой записи.
Белый ромб, так называемая разделяемая агрегация, не предполагает владения элементами на другом конце (ни в OMT, ни в UML): элементы могут прекрасно пережить свою совокупность. Ограничение жизненного цикла — это характеристика композиции (точнее, составной агрегации, предполагающей исключительное право собственности), которая представлена черным ромбом.
Прикрепляю к посту несколько видео по теме:
Прикрепленное видео 1 - GoF паттерны
Прикрепленное видео 2 - 8. Поведенческие шаблоны
Прикрепленное видео 3 - Понятие паттерна проектирования. Курс "Шаблоны проектирования"