Repository pattern
Astrazione tra la logica di dominio e l'archiviazione: il codice di dominio parla con un'interfaccia UserRepository, non direttamente con Postgres o Mongo.
Pattern classico del DDD (Eric Evans). Il repository si presenta come una collezione in memoria di entità di dominio; i dettagli di SQL, HTTP o Mongo restano nascosti dietro l'interfaccia. Si combina con lo Unit of Work per la gestione delle transazioni.
Dà il meglio nei domini complessi, con un aggregate root dominante per ogni repository. Anti-pattern: l'IRepository<T> generico che si limita a incapsulare findById/save dell'ORM, cioè astrazione in più senza alcun vantaggio.