Modello del dominio e query

8

Sono nuovo di DDD, avendo lavorato solo nelle app Transaction-Script con un modello anemico, o semplicemente Big Balls of Mud, quindi ti prego di perdonare qualsiasi terminologia che abusa.

Sto cercando di capire la corretta separazione tra il modello di dominio e il repository. Qual è il modo corretto di costruire un oggetto di dominio che proviene da un database, assumendo l'esigenza (incredibilmente semplificata) di interrogare gli oggetti per stato (restituisce enumerable ) o per ID.

  • Se un factory sta costruendo gli oggetti, esponendo i metodi per GetByStatus() e GetByID() , utilizzando un repository DIed?
  • Un repository dovrebbe essere chiamato direttamente, sapendo come costruire un modello di dominio dal DTO?
  • Il modello di dominio deve avere un costruttore per ottenere tramite ID, utilizzando una repoistoria DIed per caricare lo stato iniziale, utilizzando un altro metodo (?) per l'elenco?

Non sono sicuro di quale sarebbe il modo migliore e questa domanda ha una risposta che difende ciascuno (questi sono certamente mutuallu esclusivi).

    
posta Tyrsius 19.12.2012 - 07:51
fonte

1 risposta

6

Il repository è un servizio del modello di dominio, che ha la responsabilità di fungere da livello tra il dominio e l'archivio dati. Dovrebbe avere un metodo per interrogare entità e metodi per salvarli e aggiornarli.

Per rispondere alla tua domanda:

  • Direi di no. Penso che se usi le fabbriche per creare il tuo oggetto dominio, dovrebbe essere ovvio che l'oggetto dominio proviene dall'archivio dati e non viene creato di nuovo.
  • Sì, se vuoi. Penso che sia abbastanza vicino ai dettagli di implementazione e possa essere lasciato su di te.
  • Decisamente no. Come ho detto, dovrebbe essere ovvio da dove proviene l'entità.

Inoltre, se si utilizza un framework ORM, questo framework è già una forma di repository. Sfrutta appieno e non reinventare la ruota né aggiungere strati di complessità non necessari su di essa.

    
risposta data 19.12.2012 - 08:01
fonte

Leggi altre domande sui tag