Estoy haciendo esta pregunta porque después de desarrollar algunas pequeñas soluciones de cms personalizadas en un marco, desarrollé la idea de que los modelos pueden sustituirse fácilmente con ORM que facilitan la tarea de validar, obtener y configurar datos, ya que eso es todo lo que se necesitan para .
Hace poco recibí un pedido de una solución compleja de gestión personalizada de clientes. Después de investigar un poco sobre cómo proceder, encontré esto:
http://blog.astrumfutura.com/2008/12/the-m-in-mvc-why-models-are-misunderstood-and-unappreciated/
Ahora la idea no es nueva ya que eso es lo que había leído sobre el enfoque MVC, los modelos manejan la lógica de negocios. Pero me resulta difícil planificar un enfoque en el que los Modelos manejen la lógica de negocios y sean clases que estén completas en sí mismas debido al tipo de trabajo al que me he acostumbrado.
Por favor, ayúdenme aquí explicando la idea y señalando algunos ejemplos, artículos, etc.
fuente
Respuestas:
Debería leer más sobre el diseño impulsado por dominio . Básicamente intenta capturar los requisitos de la empresa en un modelo puro (en su mayoría modelos de objetos) que puede realizar todas las tareas lógicas empresariales necesarias. Este modelo se puede invocar desde una capa de aplicación (por ejemplo, la vista o el controlador en MVC, en MVP lo llama y lo ajusta para la GUI en un presentador). El modelo también debe ser tan ignorante de la persistencia y otras cosas técnicas como sea posible.
Encapsular la lógica empresarial en un modelo de dominio de este tipo tiene algunas grandes ventajas:
Recomiendo el libro de Eric Evan sobre diseño impulsado por dominio para leer más, ya que lo guiará en la dirección correcta y le dará algunos buenos ejemplos sobre dónde colocar qué lógica. Apuesto a que para cuando lo haya leído, un gran porcentaje de sus entidades contendrá más que datos planos .
Supongo que, por modelo, se refiere principalmente a entidades en este contexto. Poner lógica / comportamiento empresarial en las entidades no es una tarea trivial. Pero siempre hay que pensar en lo que una entidad es y lo que una entidad lo hace . ¿Tiene algunas responsabilidades o comportamientos? A veces está bien tener entidades planas si los comportamientos o las responsabilidades se expresan mejor como servicios.
Supongamos que tienes un animal. Si bien sus atributos se pueden guardar de manera plana en una base de datos, también tiene cierto comportamiento. Necesita comer Pero un herbívoro no comerá carne, por lo que debe asegurarse de que muestre su comportamiento cuando el programador quiera que consuma carne por la fuerza. Se puede mover y puede hacer su propio ruido único. Estas son algunas cosas que deberían modelarse en la entidad, por ejemplo. Seguro que no dependería de los servicios de procedimiento para hacer que esos animales coman, se muevan o hagan ruido.
Pero todos los ejemplos son superficiales sin un dominio comercial concreto. Por lo tanto, piense en su dominio comercial y en sus entidades, comportamientos y responsabilidades. Un dominio de otro negocio puede contener entidades que se parecen mucho a un extraño, pero de hecho son algo completamente diferente o muestran un comportamiento totalmente diferente. El modelo debe representar ante todo el dominio de sus usuarios lo más preciso posible.
fuente