Cómo hacer que los modelos hagan más que configurar y obtener datos y validación

8

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 por ORMs que facilitan la tarea de validar, obtener y configurar datos, ya que eso es todo. son necesarios para.
Hace poco recibí un pedido de una solución de administración de cliente personalizada compleja. Después de investigar un poco sobre cómo proceder, encontré esto:
enlace

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 se completan por sí mismas debido al tipo de trabajo al que me he acostumbrado.
Por favor, ayúdenme aquí explicando la idea y señalándome algunos ejemplos, artículos, etc.

    
pregunta kapv89 27.08.2011 - 14:54

1 respuesta

5

Debería leer más sobre Diseño controlado por dominio . Básicamente, intenta capturar los requisitos de la empresa en un modelo puro (en su mayoría, en su mayoría, modelos de objetos) que puede realizar todas las tareas lógicas empresariales necesarias. Este modelo puede invocarse 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 Presenter). El modelo también debe ser lo más ignorante posible de la persistencia y otras cosas técnicas.

La encapsulación de la lógica de negocios en este modelo de dominio tiene algunas grandes ventajas:

  • Reutilización
  • Facilidad de uso y extensión
  • Generalmente conduce a una mejor arquitectura
  • Comunica claramente las coherencias y los requisitos comerciales ...
  • ... y, por lo tanto, mejora la comunicación entre desarrolladores, clientes, analistas, etc.

Recomiendo el libro de Eric Evan sobre Diseño impulsado por dominio para una lectura adicional, ya que le indicará lo correcto Dirección y le dará algunos buenos ejemplos sobre dónde poner qué lógica. Apuesto a que para cuando lo hayas leído, un gran porcentaje de tus entidades contendrá más que datos simples .

  

Pero me resulta difícil planificar un enfoque en el que los modelos   Manejar la lógica de negocios y son clases que se completan en   ellos mismos.

Supongo que, por modelo, en su mayoría se refiere a entidades en este contexto. Poner lógica / comportamiento empresarial en las entidades no es una tarea trivial. Pero siempre debe pensar qué es una entidad y qué hace una entidad . ¿Tiene algunas responsabilidades o comportamientos? A veces está bien tener entidades planas si los comportamientos o 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 algún comportamiento. Necesita comer. Pero un herbívoro no come carne, así que debes asegurarte 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 deben modelarse en la entidad, por ejemplo. Seguro que no dependes 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 empresarial concreto. Entonces piense en el dominio de su negocio y en sus entidades, comportamientos y responsabilidades. Otro dominio de negocios puede contener entidades que se parecen mucho a un forastero, pero que son algo completamente diferente o muestran un comportamiento totalmente diferente. El modelo debe, ante todo, representar el dominio de sus usuarios lo más preciso posible.

    
respondido por el Falcon 27.08.2011 - 15:31

Lea otras preguntas en las etiquetas