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