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)?