Veo dos "escuelas de pensamiento" principales cuando se trata de crear aplicaciones de mayor escala para toda la empresa en .NET (Winforms, WPF, ASP.NET).Patrón de depósito frente a objetos comerciales "inteligentes"
Algunas personas usan el "patrón de repositorio" que usa un repositorio que sabe cómo buscar, insertar, actualizar y eliminar objetos. Esos objetos son bastante "tontos", ya que no necesariamente contienen una gran cantidad de lógica, p. son más o menos objetos de transferencia de datos.
El otro campo usa lo que yo llamo objetos comerciales "inteligentes" que saben cómo cargarse, y generalmente tienen un método Save(), posiblemente Update() o incluso Delete(). Aquí realmente no necesita ningún repositorio: los propios objetos saben cómo cargar y guardarse.
La gran pregunta es: ¿cuál usa usted o prefiere? ¿Y por qué?
¿Utiliza el mismo enfoque en todas sus aplicaciones, o tiene algún criterio en particular cuando elegir un enfoque sobre el otro? Si es así, ¿cuáles son esos criterios?
No estoy tratando de comenzar una guerra de llama aquí, simplemente tratando de averiguar qué piensan todos sobre esto y cuál es su opinión, y por qué usa uno (o ambos) patrones sobre el otro.
¡Gracias por cualquier aporte constructivo!
En ese caso, un repositorio genérico necesita saber cómo cargar todo tipo de objetos. –
y porque es genérico puede manejar la carga de todo tipo de objetos. También hace más simples las pruebas unitarias –
También me gusta el estilo de repositorio porque los objetos de transferencia de datos son más flexibles. Puede usarlos en todas partes, sin dependencia de marcos, capas, etc. Representan simplemente el concepto, el modelo. Si quiere un puente entre el modelo y el BD, construye la capa de persistencia. Desea un puente entre el modelo y el usuario que crea la interfaz de usuario. Desea calcular cosas, implementar casos de uso, construir la lógica comercial. Todo se relaciona simplemente con objetos modelo que no están vinculados a nada más que el concepto de negocio en sí. – helios