0
Fixed
Декоратор, композиция, UML
Доброе время!
Начал изучать ваш сайт с разборки паттерна Декоратор, где указывается, что он базируется на механизме композиции, но почему-то во всех UML отношениях указано обозначение агрегации вместо композиции (даже там, где подписано: Композиция).
Customer support service by UserEcho
Это отличный вопрос!
Если хочется быть на 100% правильным, то в таких случаях следует писать «композиция/агрегация», но обычно это сокращают до «композиции» т.к. при сравнении с наследованием не важно что конкретно из них имелось в виду.
Такое сокращение повелось ещё со времён книги GoF, где авторы противопоставляли наследованию именно композицию (хотя имелось в виду любое отношение вложенности). Мне лично кажется, что слово композиция более понятно обычному человеку с улицы, отсюда и имеем такое сокращение.
А вы что об этом думаете?
Александр, спасибо за ответ!
Это действительно очень тонкий момент, который я понял так:
(Disclaimer: осознавая слабость своих знаний, моё видение этой темы может быть далеко от истины)
Несмотря на то, что по факту - компоненты-декораторы связываются отношением агрегации (как правильно показано на UML модели), их вложенная архитектура усиливает связанность, превращая ее в частный случай композиции, когда само существование "объектов-оберток" абсолютно бесполезно вне единого "контейнера".
Именно поэтому, поясняя Декоратор, GoF говорят о композиции, но дают нам UML модель с агрегацией.
Что Вы скажете по поводу такой мысли?
На мой взгляд, вы сделали отличный вывод. Со всем согласен.