Ho utilizzato il pattern di repository (DDD e POEAA) per un po 'di tempo. Tuttavia alcuni membri del nostro team hanno sostenuto che si tratta solo di un ulteriore livello di astrazione e non necessario. Posso vedere alcuni vantaggi nei loro argomenti. Le moderne soluzioni ORM (NHibernate o EF) hanno quasi tutto ciò di cui hai bisogno. Ho cercato e trovato alcuni articoli come this e counterargument su questo argomento. Quindi il repository è un overkill?Il repository è un overkill
risposta
Dipende, principalmente, dalla complessità del problema e dal ruolo svolto dal modello di dominio nella soluzione. Per soluzioni semplici, il repository è probabilmente eccessivo. Ma per domini complessi con un linguaggio robusto e bisogni/requisiti in evoluzione, il Repository è un'astrazione pulita e semplice che possiede il ciclo di vita dell'oggetto dominio. Molti ORM faranno molto di questo, ma, in un dominio complesso, ci sarà sempre qualche attività di dominio che ha senso in un repository e che non è supportata da un ORM pronto all'uso.
Bottom line: dipende dal contesto.
L'accesso ai dati nei test di unità è il motivo principale per cui utilizzo le interfacce del repository. Un altro motivo per la manutenibilità: è possibile implementare facilmente le strategie di memorizzazione nella cache o passare ad altre implementazioni di accesso ai dati, come ottenere dati dal servizio anziché dal DB.
L'unico motivo per cui utilizziamo i repository nel nostro progetto è che rafforza chi sono i nostri Root aggregati (consentiamo solo repository per AR) in modo che lavoriate correttamente con l'AR invece di eseguire query per qualsiasi cosa colpisca la vostra fantasia.
E come già detto .. fornisce un'interfaccia piacevole da utilizzare durante i test di unità.
- 1. Sta usando linq in questa situazione overkill
- 2. Entity Framework Overkill per applicazioni Web?
- 3. È possibile eseguire il fork di un repository GitHub pubblico in un repository aziendale?
- 4. Come sapere chi è il manutentore di un repository GitHub?
- 5. Chiamare un repository da un repository
- 6. È sicuro utilizzare un repository git copiato?
- 7. È disponibile un repository GIT di test?
- 8. Come modificare il repository GitHub da cui è stato biforcato il mio repository?
- 9. Un repository dovrebbe chiamare un altro repository? O un repository dovrebbe chiamare un livello di servizio?
- 10. Repository mercuriale all'interno di un repository
- 11. È possibile utilizzare sia un repository locale NuGet che un repository remoto
- 12. È buona norma utilizzare un repository generico o ogni entità deve disporre di un proprio repository?
- 13. Un repository statico è un modo giusto per utilizzare NHibernate?
- 14. Avere un repository dipendente da un altro repository
- 15. Bzr: creare un repository condiviso da un repository autonomo esistente
- 16. Autenticazione Github: come utilizzare Github come repository Maven quando il repository è privato
- 17. Come eseguire il commit di un repository git all'interno di un altro repository git
- 18. Come impostare il monitoraggio su un repository esistente su un repository remoto con ngit (o jgit)?
- 19. Posso eliminare un repository GitHub e quindi passare il mio file CNAME in un altro repository?
- 20. Creare un repository git che contenga un altro repository git
- 21. È possibile eseguire il mirroring di un repository privato su gitlab.com utilizzando il protocollo SSH?
- 22. Il protocollo di repository PHP Composer è definito?
- 23. Il pattern del repository è procedurale, non OOP?
- 24. Perché il seguente comando è incoerente nel mio repository?
- 25. Qual è il modo giusto per importare un progetto Android Studio in un repository SVN?
- 26. breezejs con un repository
- 27. È possibile rendere pubblico il repository VSO (Visual Studio Online)?
- 28. Plugin artifactory jenkins: Il repository target è vuoto
- 29. "Non un repository git"
- 30. È corretto utilizzare il repository nel modello di visualizzazione?
Non si può mai sbagliare con "dipende". :) –
@Arnis - Ecco perché, come sviluppatori, non abbiamo solo martelli, abbiamo un'intera cassetta degli attrezzi. – Martin
@Martin alcuni hanno solo del nastro adesivo :) –