Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
| 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 } } |
| AbstractClassFactory abstractClassFactory = ClassFactories.GetAbstractClassFactory("mon parametre"); // ou IAbstractInterfaceFactory iAbstractInterfaceFactory = ClassFactories.GetAbstractClassFactory("mon parametre"); |
| 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 |