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 diferencia entre el desarrollo de realidad virtual y el desarrollo normal del juego?
- Cómo vender mi núcleo de PHP personalizado cms Multi-Purpose-Blog
- ¿Cómo se mantiene estructurada una aplicación php? Estoy haciendo el primero para un cliente y algunos de mis problemas están tratando de incluir archivos sin importar dónde estoy en las ideas del directorio.
- ¿Qué es mejor, Jackson o Gson?
- ¿Cómo reduzco AutoPostBacks desde mi página en ASP.NET?
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!)