Zasada jednej odpowiedzialności w Springowym serwisie.

0

Witam. Mam klasy serwisowe w springu odpowiedzialne za operacje na różnego rodzaju kontach. Wyglądają one mniej więcej tak:

klasa serwisowa konto osobiste i takie metody;
zakładanie konta
wpłata
wypłata
transfer

Poza kontem osobistym są jeszcze inne rodzaje kont. Wszystkie te konkretne typy korzystają z bardziej ogólnej klasy account i w niej są zdefiniowane wspólne części dla tych metod. Ta ogólna klasa jest wstrzykiwana do klas konkretniejszych.

Czy taka struktura, w której jedna klasa serwisowa jest odpowiedzialna za cztery takie czynności nie łamie zasady jednej odpowiedzialności? Rozbijać to jakoś na mniejsze klasy? Czy takie klasy nie będę zbyt małe? Aktualne przykładowo klasa konto osobiste ma 4 publiczne metody takie jak powyżej i 1 prywatną. Zajmuje jakieś 90 linijek.

Zaś ta klasa wspólna account, do której odwołują się te konkretne ma 230 linijek kodu. Proste metody typu CRUD dla nowego konta, transfer, wpłata, wypłata oraz takie prywatne metody pomocnicze do obliczania opłaty za prowadzenie, rozbita na trzy. Jedna sprawdza czy należy naliczyć opłatę, druga ją nalicza a trzecia aktualizuje bazę danych.

Dzielić to np. na jedna klasę odpowiedzialną za wpłata, drugą za wypłatę itd? Zarówno tą jakby wspólną klasę i konkretne klasy?

1
olek1 napisał(a):

Czy taka struktura, w której jedna klasa serwisowa jest odpowiedzialna za cztery takie czynności nie łamie zasady jednej odpowiedzialności? Rozbijać to jakoś na mniejsze klasy?

nie nie łamie. a nawet jak to z kodeksu ulicy: zasady są po to ,żeby je łamać. na te zasady patrz z przymróżeniem oka i zachowując zdrowy rozsądek.

na tej zasadzie to dao też by łamało itd. ważne, że dotyczy to kontekstu konta. do reszty się nie odnoszę, bo średnio rozumiem. klasa account to wydaje mi się jakaś Encja modelu z kilkoma metodami biznesowymi operującymi na samej sobie. wgl nie rozumeim co tam niżej zagmatwanie piszesz. jakoś to zagmatwałeś strasznie. może pokaż kod?

2

@olek1 zdrowy rozsądek to jedyna odpowiedź. Jeśli widzisz że masz np. kilka metod związanych z pewnym aspektem, a cała klasa puchnie to wydzielasz te metody do osobnego serwisu i tyle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1