Digamos que tiene un usuario de entidad de dominio y desea apoyar la capacidad de un usuario para agregar un artículo a su carrito de compras. Ahora, queremos asegurarnos de que los elementos de la cesta de la compra son únicos, por lo que creamos la siguiente función dentro de la clase Usuario:¿Debe colocarse la lógica comercial en el dominio o los servicios?
function AddItemToCart(Item item)
{
// Add business logic to make sure item is unique
}
Esto funciona muy bien. Pero, ¿y si ahora también queremos enviar un correo electrónico al usuario cada vez que se agrega un artículo a su carrito? Podemos agregar esto en AddItemToCart, pero requeriría inyectar algún tipo de dependencia IEmailer en la clase User.
La alternativa sería crear un servicio para manejar esta transacción (por ejemplo, ShoppingCartService) que llevaría a cabo la lógica comercial y enviaría el correo electrónico. Sin embargo, esto conduce a un dominio bastante anémico (es decir, la clase de usuario no es más que getters/setters)
¿Qué sucede si un administrador del sitio está haciendo un teléfono en orden? ¿Estás seguro de que User.AddItemToCart es un diseño adecuado en este escenario? –