Различение между делегированием, композицией и агрегацией (Java OO Design)
Я сталкиваюсь с постоянной проблемой, которая отличает делегирование, состав и агрегацию друг от друга и определяет случаи, когдаЛучше всего использовать один над другим.
Я проконсультировался с книгой по Java OO Analysis and Design, но моя путаница все еще остается. Основное объяснение таково:
Делегация: Когда мой объект использует другой объектс функциональностью как есть, не меняя ее.
Состав: Мой объект состоит из других объектов, которые, в свою очередь, не могут существовать после того, как мой объект уничтожен - сборщик мусора.
агрегированиеМой объект состоит из других объектов, которые могут жить даже после того, как мой объект уничтожен.
Возможно ли иметь несколько простых примеров, демонстрирующих каждый случай и обоснование их? Как еще можно продемонстрировать эти примеры, кроме моего объекта, просто имеющего ссылку на другой объект (ы)?