Przechodząc z C++ do Javy nie bardzo rozumiałem pojęcie paczek (pakietów, packages, jak zwał tak zwał). Po styczności z komercyjnym kodem w pierwszej pracy myślałem, że pojąłem o co chodzi. Przykładowo: **dto **- a w niej klasy obiektów transferowych, entities- encje zapisywane na bazie, **translators ** - entityToDtoTranslator, **controllers ** - wiadomo.
Tak samo były skonstruowane wszystkie poradniki (głównie mowa o Springu) na które trafiłem. Do czasu aż obejrzałem to
Czyli wszystko powyższe to błąd? Powinno się bardziej skupiać na stworzeniu samowystarczalnej paczki która sama przynosi jakąś funkcjonalność?
Pomyślałem więc o prostym przykładzie - logowanie do serwisu.
W skrócie: signInController -> signInValidator -> accountFacade -> accountRepository -> accountEntity, czyli spoko mamy paczkę która sama w sobie potrafi przejeść przez proces logowania, możemy wszystkie klasy poza fasadą całkowicie zamknąć na świat (wszystkie metody package-scoped). No ale jak jest logowanie, musi być i rejestracja, teoretycznie wystarczy dopisać registerController i registerValidator i podpiąć go pod accountFacade, jednak wtedy nie mamy już jednej samowystarczalnej paczki, jest ona zależna od innej. Czyli co teraz? Zamykamy całość w jeden moduł/pakiet? Czy stosujemy jakieś inne podejście?