Rozróżnianie delegowania, składu i agregacji (Java OO Design)

Stoję przed ciągłym problemem odróżniającym delegowanie, skład i agregację od siebie, a także identyfikuję przypadki, w których najlepiej jest użyć jednego nad drugim.

Skonsultowałem się z książką Java OO Analysis and Design, ale nadal mam wątpliwości. Głównym wyjaśnieniem jest to:

Delegacja: Kiedy mój obiekt korzysta z funkcjonalności innego obiektu, tak jak bez zmiany go.

Kompozycja: Mój obiekt składa się z innych obiektów, które z kolei nie mogą istnieć po tym, jak mój obiekt zostanie zniszczony - zbieranie śmieci.

Zbiór: Mój obiekt składa się z innych obiektów, które mogą żyć nawet po zniszczeniu mojego obiektu.

Czy można przedstawić kilka prostych przykładów demonstrujących każdy przypadek i ich uzasadnienie? Jak inaczej można wykazać te przykłady poza tym, że mój obiekt ma po prostu odniesienie do innego obiektu (ów)?

questionAnswers(4)

yourAnswerToTheQuestion