Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

3 mars 2014 1 03 /03 /mars /2014 17:23

L’interface - Contient une liste de membres à implémenter.
public interface IRepository<TModelBase>
    {
        List<TModelBase> GetAll();
    }

 

Le « manager »- On passe une classe Repository implémentant l’interface  dans le constructeur
public class RepositoryManager<TModelBase>
    {
        private IRepository<TModelBase> repository;
 
        public RepositoryManager(IRepository<TModelBase> repository)
        {
            this.repository = repository;
        }
 
        public List<TModelBase> getAll()
        {
            return repository.GetAll();
        }
    }

 

2 Classes exemples implémentant l’interface
public class ArticleRepository : IRepository<ArticleModel>
    {
        public List<ArticleModel> GetAll()
        {
            return new List<ArticleModel>() { new ArticleModel() { ArticleName = "Jean 1" }, new ArticleModel() { ArticleName = "Jean 2" } };
        }
 
    }
public class OtherArticleRepository : IRepository<ArticleModel>
    {
        public List<ArticleModel> GetAll()
        {
            return new List<ArticleModel>() { new ArticleModel() { ArticleName = "Blouson 1" }, new ArticleModel() { ArticleName = "Blouson 2" } };
        }
    }
public class ArticleModel
    {
        public string ArticleName { get; set; }
    }

 

Démonstration
Dans le premier cas ce sera une liste de « jeans »
Dans le second cas ce sera une liste de « blousons »
De cette façon on peut changer très facilement la source de données .Exemple on peut implémenter un repository allant chercher les informations dans un document Xml et un autre allant les chercher dans une base de données .
  IRepository<ArticleModel> repository;
 
        private void button1_Click(object sender, EventArgs e)
        {
            repository = new ArticleRepository();
            RepositoryManager<ArticleModel> repositoryManager = new RepositoryManager<ArticleModel>(repository);
 
            dataGridView1.DataSource = repositoryManager.getAll();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            repository = new OtherArticleRepository();
            RepositoryManager<ArticleModel> repositoryManager = new RepositoryManager<ArticleModel>(repository);
 
            dataGridView1.DataSource = repositoryManager.getAll();
        }

 

Partager cet article

Repost 0
Published by Romagny13 - dans Design patterns
commenter cet article

commentaires