Mam w projekcie serwis, który jest dość duży, ma ok. 1k lini kodu.
Serwis ten ma w sobie około 10~ metod, każda z nich pakuje odpowiednio event z odpowiednią logiką i wrzuca na topic kafkowy.
Każda z tych metod na początku wykonuje pewną common walidacje
Do głowy przychodzą mi dwa rozwiązania:
Klasa abstrakcyjna AbstractEventsProducer
która miała by metode publiczną metodę processEvent()
w której robiłaby tę common walidacje, do tego jakąś metode abstrakcyjną process()
która by już była obsługiwana przez jej implementacje.
No i właśnie w tym wypadku miałbym 10 osobnych klas implementujących AbstractEventsProducer
typu CustomerOrderChangeEventProducer
itd.
Jakaś klasa np. EventsProducerGateway
który przyjmował by w metodzie processEvent()
enum jakiego dotyczy ten event, w środku common walidacja i jakiś switch, który przekierunkowywałby ruch dalej do processorów
. Te processory to byłby klasy które mają zagregowane ze sobą metody dotykające podobnych domen.
Bo tak się składa żę mam np. 4 eventy w konteście Customera
Które z tych rozwiązań jest lepsze? Ewentualnie czy istnieje jeszcze jakaś lepsza alternatywa?