sourcemaking software patterns book design-patterns repository-pattern datamapper

design-patterns - book - design patterns software



¿En qué se diferencia el patrón del asignador de datos del patrón del repositorio? (1)

Encontré dos patrones que parecen tener el mismo objetivo: ¿cuál es la diferencia?

http://martinfowler.com/eaaCatalog/dataMapper.html

http://martinfowler.com/eaaCatalog/repository.html


[el repositorio es] otra capa de abstracción sobre la capa de mapeo donde se concentra el código de construcción de la consulta.

El DataMapper garantiza que el lado DB de la valla no necesita saber acerca de los DataMapper específicos de su lógica de negocios y cómo los datos comerciales guardan los datos en su memoria, y su lado comercial de la valla no necesita saber cómo los datos está almacenado.

Para ilustrar, considere que sus datos se mantienen en la base de datos como un conjunto de filas, digamos que cada fila representa un artículo en su tienda. En el lado de la memoria, es posible que desee mantener esa información no como una lista de StoreItem sino como dos listas, una para los artículos que están en stock y otra para los artículos fuera de stock. Sería el DataMapper del DataMapper manejar la transición entre una lista y dos listas.

Puede complicar las cosas agregando listas de otros objetos y herencia en el lado comercial de la cerca. El ''DataMapper'' tendría que traducirse hacia y desde esa representación a la base de datos relacional.

El ''Repositorio'' proporciona la funcionalidad "SELECCIONAR * DE LA tabla DÓNDE ESTÁ" al lado comercial. Usted proporciona un filtro y devolverá una colección de objetos que coinciden con ese filtro.

En resumen: el ''DataMapper'' se ocupa de objetos individuales, el ''Repositorio'' se ocupa de las colecciones de objetos y amplía la funcionalidad proporcionada por el ''DataMapper''.