Wpis z mikrobloga

#java #spring
Mireczki, mam taki przypadek: https://pastebin.com/4m58hnC1
W klasie abstrakcynej znajduje sie metoda execute, ktora wykonuje większość pracy, ale potrzebuje do tego kilku innych serwis. Klasy które po niej dziedziczą wykonują tylko drobną część i nie potrzebują żadnych dodatkowych serwisów.

Chciałbym wstrzyknąć dependency do konstruktora, tylko w klasach dziedziczących muszę za każdym razem wprowadzać te same serwisy, co mi się nie podoba, bo:
1. Duplikacja
2. Gdy zmienię metdę execute tak, że będzie wymagała jeszcze jednego serwisu to będę musiał edytować wszystkie klasy, które po niej dziedziczą aby wrzucić to dodatkowe dependency.

Teoretycznie mógłbym wrzucić te wszystkei serwisy do jednej klasy i go wstrzykiwać, ale średnio podoba mi się takie rozwiązanie: https://pastebin.com/9fiVgbFp

Jest na to jakiś pattern?
  • 8
@globalbus: Dać się da, ale czytelność mocno spadnie, jak wrzucę 4 albo 5 takich interfejs funkcyjnych do metody/konstruktora. Przy użyciu dziedziczenia i nadpisaniu metod wygląda to bardziej czytelnie.
@Patres: problem nieczytelności robi się wtedy, gdy musisz przeprojektowywać coś zaplanowanego w tym stylu. Klas abstrakcyjnych nie używam prawie wcale i nie czuję, aby mi to przeszkadzało, zwłaszcza w springu. To nie CXF, gdzie hierarchia dziedziczenia potrafi sięgać po 5 poziomów w dół.