Stiamo provando a spostare i dati dal nostro livello di servizio gonfiato nel nostro livello di dominio utilizzando un approccio DDD. Al momento disponiamo di molte logiche commerciali nei nostri servizi, che sono sparsi ovunque e non beneficiano dell'eredità.
Abbiamo una classe Domain centrale che è al centro della maggior parte del nostro lavoro: un trade. L'oggetto Trade saprà valutare se stesso, come stimare il rischio, validare se stesso, ecc. Possiamo quindi sostituire i condizionali con polimorfismo. Ad esempio: SimpleTrade si comporterà in un modo, ma ComplexTrade si comporterà in un altro.
Tuttavia, siamo preoccupati che questo possa gonfiare le classi commerciali. Dovrebbe davvero essere responsabile della propria elaborazione, ma la dimensione della classe aumenterà in modo esponenziale con l'aggiunta di ulteriori funzionalità.
Quindi abbiamo delle scelte:
- Metti la logica di elaborazione nella classe commerciale. La logica di elaborazione è ora polimorfica in base al tipo di operazione, ma la classe di attività ha ora più responsabilità (prezzi, rischio, ecc.) Ed è ampia
- Inserisci la logica di elaborazione in un'altra classe come TradePricingService. Non è più polimorfico con l'albero di eredità commerciale, ma le classi sono più piccole e più facili da testare.
Quale sarebbe l'approccio suggerito?