Estamos tratando de mover datos de nuestra capa de Servicio hinchada a nuestra capa de Dominio usando un enfoque DDD. Actualmente tenemos mucha lógica de negocios en nuestros servicios, que se extiende por todo el lugar y no se beneficia de la herencia.
Tenemos una clase de dominio central que es el foco de la mayor parte de nuestro trabajo: un comercio. El objeto Trade sabrá cómo valorarse a sí mismo, cómo estimar el riesgo, validarse a sí mismo, etc. Luego, podemos reemplazar los condicionales con polimorfismo. Por ejemplo: SimpleTrade se cotizará de una manera, pero ComplexTrade se cotizará de otra manera.
Sin embargo, nos preocupa que esto hinche las clases de Comercio. Realmente debería estar a cargo de su propio procesamiento, pero el tamaño de la clase aumentará exponencialmente a medida que se agreguen más funciones.
Entonces tenemos opciones:
- Ponga la lógica de procesamiento en la clase Trade. La lógica de procesamiento ahora es polimórfica según el tipo de operación, pero la clase de operación ahora tiene múltiples responsabilidades (fijación de precios, riesgo, etc.) y es grande
- Ponga la lógica de procesamiento en otra clase, como TradePricingService. Ya no es polimórfico con el árbol de herencia Trade, pero las clases son más pequeñas y más fáciles de probar.
¿Cuál sería el enfoque sugerido?