Persistenza L'ignoranza è un'applicazione del principio della responsabilità unica, che in pratica significa che gli oggetti del dominio ( DO ) non dovrebbero contenere codice relativo alla persistenza, ma dovrebbero solo contenere la logica di dominio
a) Presumo questo significa che il codice che contatta i livelli inferiori (cioè i livelli di persistenza) vive al di fuori del modello di dominio in altre classi ( OC ) di un livello di business logic?
b) Se la mia ipotesi in a) è corretta, allora DO , ad esempio Customer
, non contiene mai metodi come GetCustomers
o GetCustomerByID
?
c) Se le mie ipotesi sotto a) e b) sono corrette, e supponendo che Customer
oggetto di dominio usi il caricamento lazy per alcune delle sue proprietà, allora ad alcuni la logica interna di point Customer
deve contattare OC , che a sua volta recupera i dati deffered. Ma se Customer
ha bisogno di contattare OC per ricevere dati deffered, allora non possiamo davvero affermare che gli Oggetti Dominio non contengano logiche relative alla persistenza?!
Grazie
RISPOSTA A jkohlhepp
1) Presumo che OrderProvider
e CustomerProvider
siano contenute nel livello della logica aziendale?
2) Dalla tua risposta deduco che le mie ipotesi sotto b) sono corrette?
3)
... I would check to see if some private orders field was populated or if it was null. If it is null ...
Ma per quanto posso dire, non appena il codice del dominio deve verificare se il campo order
privato è stato popolato, e se non lo è, contattando OrderProvider, stiamo già violando PI principio?!