Esta es una pregunta que hice hace un tiempo sobre SO, pero puede discutirse mejor aquí ...
Donde trabajo, hemos ido y venido sobre este tema varias veces y estamos buscando un control de cordura. Aquí está la pregunta: ¿Deberían los Business Objects ser contenedores de datos (más como DTO ) o también deberían contener lógica que pueda realizar alguna funcionalidad en ese objeto?
Ejemplo: tome un objeto de cliente, probablemente contiene algunas propiedades comunes (Nombre, Id, etc.), ¿ese objeto de cliente también debe incluir funciones (Guardar, Calc, etc.)?
Una línea de razonamiento dice que separe el objeto de la funcionalidad (principal de responsabilidad única) y coloque la funcionalidad en una capa u objeto de Business Logic.
La otra línea de razonamiento dice que no, si tengo un objeto de cliente solo quiero llamar a Customer.Save y listo. ¿Por qué necesito saber sobre otra clase para salvar a un cliente si estoy consumiendo el objeto?
Nuestros dos últimos proyectos han tenido los objetos separados de la funcionalidad, pero el debate se ha planteado nuevamente en un nuevo proyecto.
¿Qué tiene más sentido y por qué?