Próbujemy przenieść dane z naszej rozdętej warstwy usługi do naszej warstwy domeny przy użyciu metody DDD. Obecnie w naszych usługach jest dużo logiki biznesowej, która jest rozrzucona po całym miejscu i nie korzysta z dziedziczenia.
Mamy centralną klasę domen, która jest przedmiotem większości naszej pracy - handel. Obiekt Trade będzie wiedział, jak sam wycenić, jak oszacować ryzyko, zweryfikować siebie itp. Możemy wtedy zastąpić warunki warunkowe polimorfizmem. Np .: SimpleTrade wycenia się w jedną stronę, ale ComplexTrade wyceni się w inny sposób.
Obawiamy się jednak, że spowoduje to rozdęcie klasy handlowej. To naprawdę powinno być odpowiedzialne za własne przetwarzanie, ale rozmiar klasy będzie wykładniczo zwiększał się wraz z dodawaniem kolejnych funkcji.
Mamy więc wybór:
- Umieść logikę przetwarzania w klasie Trade. Logika przetwarzania jest teraz polimorficzna w zależności od rodzaju transakcji, ale klasa handlu ma teraz wiele obszarów odpowiedzialności (ceny, ryzyko itp.) I jest duża
- Umieść logikę przetwarzania w innej klasie, takiej jak TradePricingService. Nie jest już polimorficzny z drzewem Dziedziczenia handlu, ale klasy są mniejsze i łatwiejsze do przetestowania.
Jakie byłoby sugerowane podejście?