10

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

12

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.

+9

Nunca se puede equivocar con 'depende'. :) –

+0

@Arnis - Es por eso que, como desarrolladores, no solo tenemos martillos, tenemos toda una caja de herramientas. – Martin

+5

@Martin algunos solo tienen cinta adhesiva :) –

4

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.

1

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.

Cuestiones relacionadas