Saltar al contenido

Dónde poner la lógica de negocios en DDD

Hola, hallamos la respuesta a lo que andabas buscando, has scroll y la verás aquí.

Solución:

Si coloca toda su lógica comercial en una capa de servicio (implícitamente sin estado), está escribiendo código de procedimiento. Al desacoplar el comportamiento de los datos, renuncia a escribir código orientado a objetos.

Eso no siempre es malo: es simple, y si tiene una lógica comercial simple, no hay razón para invertir en un modelo de dominio orientado a objetos completo.

Cuanto más compleja es la lógica empresarial (y más grande es el dominio), más rápido el código de procedimiento se convierte en código de espagueti: los procedimientos comienzan a llamarse entre sí con diferentes condiciones previas y posteriores (en un orden incompatible) y comienzan a requerir un estado cada vez mayor. objetos.

El artículo de Martin Fowler sobre Modelos de dominio anémicos es probablemente el mejor punto de partida para comprender por qué (y en qué condiciones) las personas se oponen a poner la lógica empresarial en una capa de servicio.

Una capa de servicio en sí misma no es un antipatrón, es un lugar muy razonable para colocar ciertos elementos de su lógica empresarial. Sin embargo, debe aplicar discreción al diseño de la capa de servicio, asegurándose de no robar la lógica comercial de su modelo de dominio y los objetos que lo componen.

Al hacerlo, puede terminar con un true anti-patrón, un modelo de dominio anémico. Esto es discutido en profundidad por Martin Fowler aquí.

Su ejemplo de un IAuthenticationService quizás no sea el mejor para discutir el problema: gran parte de la lógica en torno a la autenticación puede verse como viviendo en un servicio y no realmente asociada con objetos de dominio. Un mejor ejemplo podría ser si tuviera algún tipo de IUserValidationService para validar a un usuario, o peor aún, un servicio que haga algo como procesar pedidos: el servicio de validación está eliminando la lógica del objeto del usuario y el servicio de procesamiento de pedidos está quitándole la lógica. sus objetos de pedido, y posiblemente también de objetos que representan a clientes, avisos de entrega, etc.

Te invitamos a proteger nuestro análisis exponiendo un comentario o valorándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *