Composition Over Inheritance, czyli Kompozycja ponad dziedziczeniem
Zasada mówi, że lepiej korzystać jest z kompozycji (klasa A używa klasy B) zamiast dziedziczenia po klasie. Stosując dziedziczenie, należy pamiętać, aby nie złamać Zasady podstawienia Liskov.
Zasada nie mówi, że mamy całkowicie zrezygnować z dziedziczenia.
Przykład:
Mamy Pracownika i Kierownika.
Dziedziczenie: Obaj mają imię i nazwisko. Mogą oni dziedziczyć po klasie Pracownik.
Kompozycja: Obaj mają wyliczaną pensję. Tutaj lepiej jest wstrzyknąć w Pracownika i Kierownika klasę, która odpowiada za wyliczenie ich pensji.
Zalety
- Mniejsza zależność między klasami.
- Rozbicie klas na mniejsze (rozbicie odpowiedzialności na różne klasy).
- Łatwiej zachować zgodność z zasadami SOLID.
- Łatwiejsze testowanie kodu.
Wady
- Czasem lepiej zastosować dziedziczenie.
Wszystkie posty związane z mini projektem: Poznaj zasady SOLID i OOP:
[catlist name=”projekt-poznaj-zasady-solid-i-oop” pagination=yes orderby=date order=asc author=no numberposts=100]Źródła
Obraz główny
Materiały
- https://devcave.pl/notatnik-juniora/zasady-projektowania-kodu#composition-over-inheritance
- https://blog.helion.pl/dziedziczenie-vs-kompozycja/
- https://sarvendev.com/2017/10/kompozycja-ponad-dziedziczenie/
- https://javarevisited.blogspot.com/2013/06/why-favor-composition-over-inheritance-java-oops-design.html
- https://en.wikipedia.org/wiki/Composition_over_inheritance
Sorry, there was a YouTube error.