Siema
Każdy wie, że trzeba pisać kod, który jest rozszerzalny / extensible, w końcu to oczywiste... no i właśnie im dłużej o tym myślę, tym bardziej się utwierdzam w przekonaniu, że ja takiego pisać nie umiem.
Teorię powiedzmy że znam - kod powinien być otwarty na rozszerzenia
, czyli żeby drugi programista mógł dodać jakąś rzecz bez zmieniania obecnego kodu. No i właśnie, co tak naprawdę, odwołując się do konkretnego kodu, to znaczy?? Przecież, koniec końców, gdzieś ta zmiana musi być - niżej lub wyżej w stosie wywołań metod, no ale chyba musi być...
Załóżmy, że mamy sklep internetowy, i można w nim oprócz dodawania produktu i jego kupna, również ocenić produkt, wystawić mu recenzję. I jak tu napisać jakiś serwis do wystawiania recenzji danego produktu, żeby był rozszerzalny?
Jakie konkretne techniki w javie możemy zastosować? Interfejsy? Ale koniec końców i tak się gdzieś podaje konkretną implementację, więc w tamtym miejscu i tak trzeba będzie zmienić. Dziedziczenie i korzystanie z klasy bazowej? Nadal chyba gdzieś ta zmiana musiałaby być poczyniona.
A jak już dołożymy do tego enterprise standardy, jak np JPA (no jest słabe, ale jestem do niego najbardziej przyzwyczajony) i ostatecznie wychodzi mi taka aplikacja, gdzie załóżmy podział pakietowy mam nawet spoko, ale nadal w każdym pakiecie mam jakiś kontroler, jakiś dto, jakiś mapper... czy to jest extensible code
?