Nous essayons de déplacer les données de notre couche de service gonflée vers notre couche de domaine en utilisant une approche DDD. Nous avons actuellement beaucoup de logique commerciale dans nos services, qui est répartie partout et ne bénéficie pas de l'héritage.
Nous avons une classe de domaine centrale qui est au centre de la plupart de nos travaux - un métier. L'objet Trade saura se tarifier, estimer le risque, se valider, etc. On pourra alors remplacer les conditionnels par du polymorphisme. Par exemple: SimpleTrade se tarifiera dans un sens, mais ComplexTrade se tarifera dans une autre.
Cependant, nous craignons que cela ne fasse gonfler les classes commerciales. Il devrait vraiment être en charge de son propre traitement, mais la taille de la classe va augmenter de façon exponentielle à mesure que de nouvelles fonctionnalités sont ajoutées.
Nous avons donc des choix:
- Mettez la logique de traitement dans la classe Trade. La logique de traitement est désormais polymorphe en fonction du type de transaction, mais la classe de transaction a désormais plusieurs responsabilités (prix, risque, etc.) et est grande
- Mettez la logique de traitement dans une autre classe telle que TradePricingService. N'est plus polymorphe avec l'arbre d'héritage Trade, mais les classes sont plus petites et plus faciles à tester.
Quelle serait l'approche suggérée?