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

7 septembre 2007 5 07 /09 /septembre /2007 21:00
Design Patterns : Method Factory
I – Présentation
Abstraction
Interface de classe ou classe abstraite
    // ne contient que des méthodes à implémenter
    public interface IAbstractInterfaceFactory
    { }
    // ou
    // contient des membres et des méthodes abstraites à implémenter
    public abstract class AbstractClassFactory
    { }
 
Implémentation
Classes héritant de l’interface ou de la classe abstraite
    public class ConcreteClass1Factory : AbstractClassFactory // ou IAbstractInterfaceFactory
    { }
    public class ConcreteClass2Factory : AbstractClassFactory // ou IAbstractInterfaceFactory
    { }
    public class ConcreteClass3Factory : AbstractClassFactory // ou IAbstractInterfaceFactory
    { }
    // ...
 
Fabrique
Classe contenant une fonction attendant un paramètre
Cette méthode détermine à partir du paramètre l’instance de la classe « concrète » à créer et à retourner
    public static class ClassFactories
    {
        public static AbstractClassFactory GetAbstractClassFactory(string parameter)
        {
            // retourne selon le parametre une nouvelle instance de ConcreteClass1Factory ou ConcreteClass2Factory ou ConcreteClass3Factory
        }
    }
 
Ensuite :
            AbstractClassFactory abstractClassFactory = ClassFactories.GetAbstractClassFactory("mon parametre");
            // ou
            IAbstractInterfaceFactory iAbstractInterfaceFactory = ClassFactories.GetAbstractClassFactory("mon parametre");
 
 
II - Exemple avec DbProviderFactory du Framework .NET
 
  ClassDiagram1-copie-4.jpg
Ici :
Abstraction : classe abstraite DbProviderFactory
Implémentation :
-          SqlClientFactory
-          OleDbFactory
-          OdbcFactory
Fabrique :
-          DbProviderFactories 
Déroulement :
on appelle la méthode GetFactory() de la fabrique DbProviderFactories
en passant un paramètre (le ProviderName ,ex : « System.Data.SqlClient »),
c’est grâce à ce paramètre que la classe concrète (SqlClientFactory,OleDbFactory,OdbcFactory) est déterminée
et qu’une instance de celle-ci(la classe concrète)  est retournée
ensuite lorsque l’on fera appel aux méthodes CreateCommand(),… ce sera la méthode dans la classe concrète correspondante qui sera appelée
 
ex :
DbProviderFactory dbProviderFactory = DbProviderFactories.GetFactory("System.Data.SqlClient");
DbConnection dbConnection = dbProviderFactory.CreateConnection(); // c'est la méthode CreateConnection de SqlClientFactory qui est appelée

Partager cet article

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

commentaires