La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Factory Design Patterns Factory Method. Factory Method Design Pattern Plan Factory : principesFactory : principes The Factory Method patternThe Factory.

Présentations similaires


Présentation au sujet: "Factory Design Patterns Factory Method. Factory Method Design Pattern Plan Factory : principesFactory : principes The Factory Method patternThe Factory."— Transcription de la présentation:

1 Factory Design Patterns Factory Method

2 Factory Method Design Pattern Plan Factory : principesFactory : principes The Factory Method patternThe Factory Method pattern The Abstract Factory patternThe Abstract Factory pattern Design patterns are recurring solutions to design problems you see over and over. [Smalltalk Companion]

3 Factory Method Design Pattern Intention Portée: classes Portée: classes Définir une interface pour la création dun objet, mais laisser les sous-classes décider de la classe à instancierDéfinir une interface pour la création dun objet, mais laisser les sous-classes décider de la classe à instancier Une classe délègue linstanciation à ses sous- classes.Une classe délègue linstanciation à ses sous- classes.

4 Factory Method Design Pattern Motivation PROBLEME:PROBLEME: Un framework possèdeUn framework possède des classes abstraites par rapport aux applicationsdes classes abstraites par rapport aux applications des sous-classes spécifiques aux applications pour réaliser différentes implémentationsdes sous-classes spécifiques aux applications pour réaliser différentes implémentations SOLUTION:SOLUTION: Le Factory Method patternLe Factory Method pattern encapsule les connaissancesencapsule les connaissances sur quelles sous-classes il faut instancier déplace ces connaissances à lextérieur du frameworkdéplace ces connaissances à lextérieur du framework

5 Factory Method Design Pattern Exemple I

6 Factory Method Design Pattern Exemple II Enterprise JavaBean (EJB) Application:Enterprise JavaBean (EJB) Application: Un bean entité est une représentation objet de données persistentesUn bean entité est une représentation objet de données persistentes ces données sont placées sur un support persistent, e.g. une base de données. Une clé primaire identifie chaque instance dun bean entité.Une clé primaire identifie chaque instance dun bean entité. Les beans entités sont créés en instanciant un objet via une méthode factory ( create).Les beans entités sont créés en instanciant un objet via une méthode factory ( create). Le même principe sapplique pour les beans de session.Le même principe sapplique pour les beans de session.

7 Factory Method Design Pattern Exemple II (suite) import javax.naming.*; public class EJBClient { public static void main (String[] argv) { // get the JNDI naming context Context initialCtx = new InitialContext (); // use the context to lookup the EJB Home interface AccountHome home=(AccountHome)initialCtx.lookup("Account"); // use the Home Interface to create a Session bean object Account account = home.create (10001, "Athul", d); // invoke business methods account.credit ( d); // remove the object account.remove (); }}

8 Factory Method Design Pattern Structure Les sous-classes redéfinissent les méthodes abstraites de la classe abstraite pour rendre la sous-classe appropriéeLes sous-classes redéfinissent les méthodes abstraites de la classe abstraite pour rendre la sous-classe appropriée

9 Factory Method Design Pattern Collaboration La classe Creator sappuie sur ses sous- classes pour définir une méthode factory qui rend une instance de la classe appropriée ConcreteProductLa classe Creator sappuie sur ses sous- classes pour définir une méthode factory qui rend une instance de la classe appropriée ConcreteProduct

10 Factory Method Design Pattern Quand lappliquer? Lorsque la classe qui doit instancier des classes ne connaît que les classes abstraites.Lorsque la classe qui doit instancier des classes ne connaît que les classes abstraites. La classe ne connaît que le moment de la création dun objet,La classe ne connaît que le moment de la création dun objet, mais ne connaît pas quelle sorte dobjets, elle doit créermais ne connaît pas quelle sorte dobjets, elle doit créer parce que cet objet dépend de lapplication Une classe veut que ses sous-classes spécifient quels objets seront créésUne classe veut que ses sous-classes spécifient quels objets seront créés Les classes délèguent la responsabilité à une ou plusieurs sous-classes daideLes classes délèguent la responsabilité à une ou plusieurs sous-classes daide on désire rendre locales les connaissances qui vont aider à déterminer quel sera la classe daide dans une situation donnéeon désire rendre locales les connaissances qui vont aider à déterminer quel sera la classe daide dans une situation donnée

11 Factory Method Design Pattern Implémentations - Variations 1.__ Une classe abstraite définit la méthode factory abstraiteUne classe abstraite définit la méthode factory abstraite Alternative: une interface contient les signatures de créationAlternative: une interface contient les signatures de création Les sous-classes de la classe abstraite implémentent linterfaceLes sous-classes de la classe abstraite implémentent linterface 2.__ Une classe concrète possède une implémentation par défaut de la méthode factoryUne classe concrète possède une implémentation par défaut de la méthode factory Les sous-classes redéfinissent ou non la méthode factoryLes sous-classes redéfinissent ou non la méthode factory 3. __ La méthode factory possède un paramètre qui identifie la sorte dobjet à créerLa méthode factory possède un paramètre qui identifie la sorte dobjet à créer

12 Factory Method Design Pattern Factory Method: diagramme de classe I factory method

13 Factory Method Design Pattern Factory Method: diagramme de classe II Invocation de la factory method createDocument() qui est responsable de la construction des objetsInvocation de la factory method createDocument() qui est responsable de la construction des objets factory method

14 Factory Method Design Pattern Bénéfices et désavantages I Les méthodes factory éliminent le besoin de lier des classes spécifiques à une application dans le codeLes méthodes factory éliminent le besoin de lier des classes spécifiques à une application dans le code Le code nintervient quavec linterface du produit et peut ainsi travailler avec nimporte quelle classe concrète définie par lusagerLe code nintervient quavec linterface du produit et peut ainsi travailler avec nimporte quelle classe concrète définie par lusager Les clients peuvent devoir sous-classer la classe Creator uniquement pour créer un type particulier dobjet ConcreteProductLes clients peuvent devoir sous-classer la classe Creator uniquement pour créer un type particulier dobjet ConcreteProduct

15 Factory Method Design Pattern Bénéfices et désavantages II Fournir des points darrimage (hook) pour les sous-classesFournir des points darrimage (hook) pour les sous-classes La création dobjets à lintérieur dune classe à laide dune méthode factory est toujours plus flexible que la création directe de lobjet.La création dobjets à lintérieur dune classe à laide dune méthode factory est toujours plus flexible que la création directe de lobjet.

16 Factory Method Design Pattern Bénéfices et désavantages III Connexion de hiérarchies parallèlesConnexion de hiérarchies parallèles Les hiérarchies parallèles de classes surviennent lorsquune classe délègue une partie de ses responsabilités à une classe séparéeLes hiérarchies parallèles de classes surviennent lorsquune classe délègue une partie de ses responsabilités à une classe séparée

17 Factory Method Design Pattern Choix dimplémentation I Deux variantes principalesDeux variantes principales La classe Creator est une classe abstraite et ne fournit pas dimplémentation par défaut de la méthode factoryLa classe Creator est une classe abstraite et ne fournit pas dimplémentation par défaut de la méthode factory La classe Creator est une classe concrète et fournit une implémentation par défaut de la méthode factoryLa classe Creator est une classe concrète et fournit une implémentation par défaut de la méthode factory

18 Factory Method Design Pattern Choix dimplémentation II La méthode factory est paramétrée.La méthode factory est paramétrée. Une variation sur ce patron permet à la méthode factory de créer plusieurs sortes de produits.Une variation sur ce patron permet à la méthode factory de créer plusieurs sortes de produits. La méthode factory possède un paramètre qui identifie la sorte dobjet à créer.La méthode factory possède un paramètre qui identifie la sorte dobjet à créer. Tous les objets créés par la méthode factory partagent linterface Product.Tous les objets créés par la méthode factory partagent linterface Product.

19 Factory Method Design Pattern Factory Method: exemple II public abstract class TablesCreator {… public abstract TableCodeCreator getTableCodeCreator(String dbName) ; } public interface TableCodeCreator {… void createSource(); } public class DB2TableCodeCreator implements TableCodeCreator {… public void createSource(padis.util.ClassInfoDescriptor descriptor, String workingDir) { // CREATES JAVA SOURCE CODE FOR tableName.java FILES} } public class ConcreteTablesCreator extends TablesCreator {… public TableCodeCreator getTableCodeCreator(String dbName) { if (dbName.equals (DB2)) return new DB2TableCodeCreator(); else if (dbName.equals (ORACLE)) return new ORACLETableCodeCreator(); …} } Classe abstraite interface Classe concrète Classe concrète

20 Factory Method Design Pattern exemple II (suite) // ConcreteTablesCreator String dbname = crs4.util.Configuration.getInstance().getProperty(default.database.name); TableCodeCreator codeCreator = this.getTableCodeCreator(dbname); //read from property for (int i=0; i

21 Factory Method Design Pattern Choix dimplémentation III Conventions de noms (Naming conventions)Conventions de noms (Naming conventions) Bonne pratique dutiliser des conventions de noms qui identifient clairement les méthodes factory.Bonne pratique dutiliser des conventions de noms qui identifient clairement les méthodes factory.

22 Factory Method Design Pattern Références E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns, Addison-Wesley Professional Computing Series, 1998.E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns, Addison-Wesley Professional Computing Series, J.W. Cooper, Java Design Patterns – A Tutorial, Addison- Wesley, 2000.J.W. Cooper, Java Design Patterns – A Tutorial, Addison- Wesley, G.S. Raj, Factory Method creational pattern, Raj, Factory Method creational pattern,


Télécharger ppt "Factory Design Patterns Factory Method. Factory Method Design Pattern Plan Factory : principesFactory : principes The Factory Method patternThe Factory."

Présentations similaires


Annonces Google