La ignorancia de persistencia es una aplicación del principio de responsabilidad única, que en la práctica significa que los Objetos de dominio ( DO ) no deberían contener código relacionado con la persistencia, sino que solo deberían contener lógica de dominio.
a) Supongo que esto significa que el código que contacta con las capas inferiores (es decir, las capas de persistencia) vive fuera del modelo de dominio en otras clases ( OC ) de una capa de lógica de negocios.
b) Si mi suposición bajo a) es correcta, entonces DO , por ejemplo Customer
, no contiene métodos tales como GetCustomers
o GetCustomerByID
?
c) Si mis suposiciones bajo a) y b) son correctos, y suponiendo Customer
objeto de dominio usa la carga diferida para algunas de sus propiedades, a continuación, en algún momento Customer
's interna lógica debe comunicarse con OC , que a su vez recupera DEFFERED datos. Pero si Customer
necesita ponerse en contacto con OC para recibir datos diferidos, ¿entonces no podemos afirmar que los objetos de dominio no contienen lógica relacionada con la persistencia?
Gracias
RESPONDIENDO A jkohlhepp
1) Supongo OrderProvider
y las CustomerProvider
clases están contenidas dentro de la capa de lógica de negocios
2) ¿De su respuesta deduzco que mis suposiciones en b) son correctas?
3)
... Comprobaría si algún campo de órdenes privadas estaba lleno o si era nulo. Si es nulo ...
Pero, por lo que puedo decir, tan pronto como el código de dominio necesite verificar si order
se rellenó el campo privado , y si no es así, contactando a OrderProvider, ¡¿ya estamos violando el principio PI ?!
fuente
Solo tiene alguna clase de conexión que llena los objetos de dominio (digamos, algo llamado "repositorio"). Puede implementar una carga diferida o cualquier tipo de esquema de coherencia de caché que desee y los objetos de dominio no son más sabios. Estás separando la responsabilidad de poblar objetos de dominio de ser objetos de dominio.
fuente