Repository
Contexte : Faire le lien entre la couche domaine et la couche de mappage de données en utilisant une interface similaire à une collection pour accéder aux objets du domaine.
public interface IRepository<T>{ T GetById(int id); IEnumerable<T> GetAll(); void Add(T entity); void Remove(T entity);}
public class InMemoryRepository<T> : IRepository<T>{ private List<T> _data = new(); public T GetById(int id) => _data.FirstOrDefault(e => e.GetHashCode() == id); public IEnumerable<T> GetAll() => _data; public void Add(T entity) => _data.Add(entity); public void Remove(T entity) => _data.Remove(entity);}Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Abstraction d’accès aux données : Une application utilise IRepository<Customer> ; l’implémentation peut être Entity Framework, Dapper ou un mock pour les tests unitaires. La logique métier est découplée de la source de données.
Exemple : Dans ASP.NET Core, un IRepository<T> générique est souvent utilisé avec DbSet<T> d’EF Core. Le pattern Repository est courant dans l’architecture propre / DDD.