Esta pregunta es independiente del idioma, pero soy un tipo C#, así que uso el término POCO para referirme a un objeto que solo preforma el almacenamiento de datos, generalmente utilizando los campos getter y setter.¿Cómo separar la validación de datos de mis objetos de dominio simple (POCO)?
Acabo de volver a trabajar mi Modelo de Dominio para ser súper duco y me quedan algunas preocupaciones sobre cómo asegurar que los valores de las propiedades tengan sentido en el dominio.
Por ejemplo, la fecha de finalización de un servicio no debe exceder la fecha de finalización del contrato bajo el que se encuentra el servicio. Sin embargo, parece una violación de SOLID poner el cheque en el Service.EndDate setter, sin mencionar que a medida que aumente la cantidad de validaciones que deben hacerse, mis clases de POCO se llenarán.
Tengo algunas soluciones (se publicarán en las respuestas), pero tienen sus desventajas y me pregunto cuáles son algunos de los enfoques favoritos para resolver este dilema?
Correcto, estos objetos no encapsulan comportamientos. Ese es todo el punto. Ellos representan mi dominio. Eso es. El comportamiento se proporciona en otros lugares. –
Su dominio no tiene comportamiento? –
Los modelos de dominio no tienen ningún comportamiento. comportamiento se adjunta a ellos por separado. Los servicios hacen cosas usando los modelos. Al menos esa es mi lectura sobre todo lo DDD. –