He tenido esta misma discusión con los desarrolladores en el pasado.
En cualquier sistema, ya sea una aplicación WCF o una aplicación web, tiene su dominio comercial (Cliente, Pedido, etc.). Estos objetos tienen propiedades y métodos simples.
Esas propiedades y métodos deben contener lógica empresarial y no solo datos. Si solo contienen datos contenidos en propiedades y son sus objetos principales para cualquier sistema, esto se considera un antipatrón según Martin Fowler (consulte bliki: AnemicDomainModel).
- ¿Cuál es la mejor manera de validar un formulario de contacto en un archivo HTML estático de una sola página?
- Cómo resolver los errores que ocurren en un entorno de producción e involucra solo los datos de algunos usuarios particulares
- ¿Hay algún sitio web que enseñe codificación a través de proyectos en vivo?
- ¿Cuáles son algunos buenos foros de Java donde uno puede aclarar sus dudas?
- ¿AngularJS sería estable después de 5 años?
Los objetos comerciales en su sistema están destinados a contener datos y comportamiento, no solo datos.
Por ejemplo, supongamos que su objeto Cliente tiene las siguientes propiedades: Nombre, Apellido, Registrado, Último inicio de sesión y Pedidos.
Si solo tuviera estas propiedades y nada más, esto se consideraría anémico.
Ahora supongamos que tiene una página web que valida si un cliente es leal o no, tendría la siguiente lógica en la página.
if (Orders.Count> 10) {
DisplayLoyalCustomer ();
}
Si esto estaba en una página web, esto se considera lógica de negocios.
Tendría más sentido agregar esto como método en el objeto Cliente.
// En la página web
If (customer.IsLoyal ()) {
DisplayLoyalCustomer ();
}
// Objeto de cliente
public bool IsLoyal (int orderCount = 10) {
return Orders.Count ()> = orderCount;
}
¿Por qué harías esto? Dos razones:
- Hace que su interfaz de usuario sea más limpia para leer, casi como una “oración de programador”.
- Puede reutilizar ese código para escalar su aplicación. Si desea crear un servicio web en lugar de una página web y la lógica de negocios estaba en la interfaz de usuario, duplicará el código en la interfaz de usuario y en el servicio web. Es mejor colocar ese código en sus objetos.
La lógica de negocios es lo que le da a sus objetos comportamiento y decisiones para actuar sobre sus datos de objetos con objetivos comerciales específicos en mente.
En nuestro caso anterior, la lógica de negocios sería el método IsLoyal () (por supuesto). Toda la lógica para determinar si ese cliente es leal o no está autocontenido en ese objeto.
Espero que esto haya ayudado.
(¡No te olvides de votar!)