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?