Stiamo provando a spostare i dati dal nostro livello di servizio gonfiato nel nostro livello Dominio utilizzando un approccio DDD. Al momento disponiamo di molta logica aziendale nei nostri servizi, che è distribuita ovunque e non beneficia dell'eredità.
Abbiamo una classe Dominio centrale che è al centro della maggior parte del nostro lavoro: un commercio. L'oggetto Trade saprà come valutare se stesso, come stimare il rischio, convalidare se stesso, ecc. Possiamo quindi sostituire i condizionali con il polimorfismo. Ad esempio: SimpleTrade si auto-quoterà da sola, ma ComplexTrade si farà un altro prezzo.
Tuttavia, siamo preoccupati che questo aumenterà le classi del commercio. Dovrebbe davvero essere responsabile della propria elaborazione, ma la dimensione della classe aumenterà in modo esponenziale man mano che vengono aggiunte ulteriori funzionalità.
Quindi abbiamo delle scelte:
- Inserisci la logica di elaborazione in Trade class. La logica di elaborazione è ora polimorfica in base al tipo di operazione, ma la classe commerciale ora ha più responsabilità (prezzo, rischio, ecc.) Ed è grande
- Inserisci la logica di elaborazione in un'altra classe come TradePricingService. Non è più polimorfico con l'albero di ereditarietà commerciale, ma le classi sono più piccole e più facili da testare.
Quale sarebbe l'approccio suggerito?