He estado usando el patrón Repository (DDD y POEAA) durante algún tiempo. Sin embargo, algunos de los miembros de nuestro equipo han argumentado que es solo una capa extra de abstracción e innecesaria. Puedo ver algunos beneficios en sus argumentos. Las soluciones modernas de ORM (NHibernate o EF) tienen casi todo lo que necesita. Busqué y encontré algún artículo como this y counterargument sobre este tema. Entonces, ¿el patrón de repositorio es una exageración?Es un patrón de Repository overkill
Respuesta
Depende, principalmente de la complejidad de su problema y del papel que desempeña su Modelo de dominio en la solución. Para soluciones simples, Repository es probablemente excesivo. Pero para dominios complejos con un lenguaje sólido y necesidades/requisitos en evolución, el Repositorio es una abstracción agradable y limpia que posee el ciclo de vida del objeto de dominio. Muchos ORM harán gran parte de esto, pero, en un dominio complejo, siempre habrá alguna actividad de dominio que tenga sentido en un repositorio y que no cuente con el soporte de un ORM listo para usar.
En pocas palabras: depende del contexto.
El acceso burlón a los datos en las pruebas unitarias es la razón principal por la que utilizo las interfaces del repositorio. Otra razón para el mantenimiento: puede implementar fácilmente estrategias de almacenamiento en caché o cambiar a otra implementación de acceso a datos, como obtener datos del servicio en lugar de DB.
El único motivo por el que utilizamos repositorios en nuestro proyecto es que impone quiénes son nuestros agregados (solo permitimos repositorios para AR) para que pueda trabajar correctamente a través del AR en lugar de consultar lo que más le guste.
Y como se mencionó anteriormente ... proporciona una interfaz agradable para simular durante las pruebas unitarias.
- 1. RIA Services y el patrón genérico Repository
- 2. ¿Error al verificar overkill?
- 3. ¿Overkill de Entity Framework es para aplicaciones web?
- 4. Entity Framework 4 Repository?
- 5. ¿Cómo es .net Entity Framework overkill versus LinqToSql?
- 6. NHibernate and Repository pattern
- 7. ¿Es este un patrón de diseño común? "Patrón de descriptor"?
- 8. Se requiere acceso de bloqueo a un bool o es Overkill
- 9. Está usando linq en esta situación overkill
- 10. El patrón de diseño Model-Repository-Service-Validator-View-ViewModel-Controller (?)
- 11. Dónde/Cómo ajustar Solr en la aplicación MVC de ASP.net (utilizando el patrón nHibernate/Repository)
- 12. Repository Commit Msg Etiquette
- 13. Eliminando Git Repository Gitolite?
- 14. Qué es un patrón de adaptador bidireccional
- 15. ¿Es este un patrón de diseño?
- 16. git repository cloning logging
- 17. SVN Repository Search
- 18. Service vs. Repository
- 19. Try Catch in Repository
- 20. A Repository Factory Class
- 21. ¿Qué es "traducción excepción persistencia" para los granos de @Repository
- 22. gcc error message repository
- 23. Confundido sobre Spring-Data DDD repository pattern
- 24. ¿Cuáles son las diferencias entre el patrón Active Record y Repository?
- 25. git project vs repository, ¿cuál es la diferencia fundamental?
- 26. Ruby on Rails with Repository Pattern?
- 27. SVN Repository Structure - ¿Por qué es esto mejor?
- 28. Patrón ECB: ¿qué es realmente un límite?
- 29. ¿Qué es un patrón anidado en Haskell?
- 30. Auto reflejo Nexus Proxy Repository
Nunca se puede equivocar con 'depende'. :) –
@Arnis - Es por eso que, como desarrolladores, no solo tenemos martillos, tenemos toda una caja de herramientas. – Martin
@Martin algunos solo tienen cinta adhesiva :) –