Mapping z logiką biznesową

0

W projekcie w którym pracuje zdefiniowana jest domena (w formacie proto, bo grpc jest użyte). Na backendzie dane te są mappowane do domeny innej firmy w celu wysłania tego całego payloadu do ich API. Nie jest to mapping 1:1, raczej jest tam troche biznesowej logiki, ale nie jakoś super dużo, bo projekt jest mały. Obecnie domena da się podzielić w pewne sekcje, które są od siebie mniej lub więcej niezależne, co pozwoliło na stworzenie łańcucha mapperów, wykonują się one po kolei, wywołując metodę map na builderze (i główny obiekt domenowy jako drugi parametr). Niestety czasami są one zależne i do wyliczenia jednego pola w danej sekcji potrzebuję pole z innej, co zwiększa liczbę parametrów w metodach i wygląda to nieładnie.

Czy macie może jakiś pomysł jak obrócić to w miarę przejrzysty kod, bez ifów i w miarę zrozumiały na pierwszy rzut oka, może jakiś design pattern dla skomplikowanych mapperów?
Może stworzyć klasy w stylu MappingRequest i tam przypisywać najpotrzebniejsze wartości z różnych sekcji do danego mappingu zamiast wrzucać to metody cały obiekt, bo wygląda to lepiej niż branie z niego trzech wartości?
Biblioteki typu MapStruct raczej też nie przejdą, kiedyś ktoś próbował to użyc i poległ.

0

Trochę enigmatyczny ten Twój opis problemu- z Twojej perspektywy to na pewno ma sens ale weź pod uwagę że my nie znamy Twojego kodu i takie ogólniki trochę trudno rozgryźć. Zakładając jednak że dobrze rozumiem problem, to brzmi jakbyście potrzebowali zastosować Anti-Corruption Layer. Wtedy Waszej domeny nie interesuje do czego dane typy są mapowane. Wysyłacie je do ACL i tam następuje właściwe mapowanie.

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