Factory Design Patterns. Contents Factory patterns: principesFactory patterns: principes The Factory Method patternThe Factory Method pattern The Abstract.

Slides:



Advertisements
Présentations similaires
Gestion des événements (suite)
Advertisements

Introspection et Réflexion Manipulation dynamique de code Java.
Programmation Web Les JSP.
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
Pattern État PowerPoint 2003, télécharger la visionneuse PowerPoint Viewer dernière édition si vous ne lavez pas…télécharger la visionneuse PowerPoint.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Langage Oriente Objet Cours 4.
POO-L3 H. Fauconnier1 Tableau et héritage Y[] yA=new Y[3]; X[] xA=yA; //ok xA[0]=new Y(); xA[1]=new X(); //non xA[1]=new Z(); //non Object XX[]int[] YZY[]Z[]
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Classes abstraites et Interfaces
Factory Design Patterns Factory Method
Langage Oriente Objet Cours 2.
Interfaces : comment classifier ?
Structures de données IFT-2000
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Introduction au paradigme orienté-objet (suite)
Présentation Structures de Données et TDA
Un patron de conception
Design Patterns Factory Method – Pattern de construction [DANT] Génie Logiciel 1.
Design Pattern: Decorator
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Cours 5 Héritage, Interfaces, classes internes. POO-L3 H. Fauconnier2 La classe Object Toutes les classes héritent de la classe Object Object méthodes:
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI 1502 Principes fondamentaux de conception de logiciels
Proxy et plus Cnam Paris jean-michel Douin, douin au cnam point fr
Patrons de conceptions de créations
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
Objectifs À la fin de ce cours, vous serez capables de :
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Cours n°3 rappels. POO-L3 H. Fauconnier2 Entrée-sortie public static void main(String[] args) { // sortie avec printf ou double a = 5.6d ; double b =
La notion de type revisitée en POO
Propriétés. Propriétés ► Les propriétés peuvent être visibles dans les environnements de scripts ► Les propriétés peuvent être accédées par programmation.
Design Patterns en programmation par objets. Plan  Design patterns –De quoi s’agit-il? –Pourquoi faut-il les utiliser?  Design patterns essentiels 
11/04/ L'héritage Cours 7 Cours 7.
Designs Patterns comment rendre son code faiblement couplé, et maintenable...
Design Pattern Hichame ELKHALFI.
Template Method Design Pattern. But Définir le squelette d’un algorithme tout en déléguant certaines étapes aux sous-classes. Les sous-classes peuvent.
Créer des packages.
Cours Les flux ou streams. Cours 162 Flux : objet possédant des méthodes capables de lire ou écrire des flots d’octets sur tout support (mémoire,
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Tutorat en bio-informatique
Entrées / Sorties.
Factory Design Patterns Abstract Factory. Abstract Factory Design Pattern Plan Factory patterns: principesFactory patterns: principes The Factory Method.
Les sockets.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Cours du 5 novembre.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
Iterator Design Pattern Alessandro Soro Sylvain Giroux.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
Factory Design Patterns Raffaella Sanna Sylvain Giroux.
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
INSTITUT SUPERIEURE D’INFORMATIQUE Design Pattern
Template Method Design Pattern. But Définir le squelette d’un algorithme tout en déléguant certaines étapes aux sous-classes. Les sous-classes peuvent.
Retour sur les interfaces Les méthodes définies dans une interface sont des méthodes qui doivent absolument être implémentées par une ou des sous-classes.
Révision Les principes SOLID. Question  Qu’est-ce que le S de Solid?
Schéma de conception Factory Method Exemple
Transcription de la présentation:

Factory Design Patterns

Contents Factory patterns: principesFactory patterns: 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]

Factory Design Patterns But et portée (1) Buts INSTANCIATION INSTANCIATIONSTRUCTURE COMPORTEMENT COMPORTEMENT Portée CLASSE Factory MethodAdapterInterpreter Template Method OBJETAbstract Factory Builder Prototype Singleton Adapter Bridge Composite Decorator Facade Proxy Chain of Responsibility Command Iterator Mediator Memento Flyweight Observer State Strategy Visitor But: que fait un patron ? Les patrons d’instanciation s’intéressent au processus de création d’objets Portée : à quel niveau s’applique un patron? Au niveau des classes ou des objets?

Factory Design Patterns But et portée (2) Les patrons au niveau des classes s’occupent des relations entre les classes et les sous-classes. Ces relations sont fixées statiquement à la compilation.Les patrons au niveau des classes s’occupent des relations entre les classes et les sous-classes. Ces relations sont fixées statiquement à la compilation. Les patrons de création au niveau des classes délèguent une partie de la création des objets aux sous-classes.Les patrons de création au niveau des classes délèguent une partie de la création des objets aux sous-classes. Les patrons au niveau des objets s’occupent des relations entre les objets, lesquels sont plus dynamiques et peuvent être modifiées à l’exécutionLes patrons au niveau des objets s’occupent des relations entre les objets, lesquels sont plus dynamiques et peuvent être modifiées à l’exécution Les patrons de création au niveau des objets délèguent la création à d’autres objets.Les patrons de création au niveau des objets délèguent la création à d’autres objets. Les patrons de “factory” permettent de configurer un système avec des objets qui peuvent varier notablement en termes de structure et de fonctionsLes patrons de “factory” permettent de configurer un système avec des objets qui peuvent varier notablement en termes de structure et de fonctions

Factory Design Patterns Factory pattern: principes (1) La création d’objets avec des comportements spécifiques demande plus que la simple instanciation d’une classeLa création d’objets avec des comportements spécifiques demande plus que la simple instanciation d’une classe La plus grande barrière au changement réside dans l’encodage direct (“hard-coding”) des classes qui peuvent être instanciéesLa plus grande barrière au changement réside dans l’encodage direct (“hard-coding”) des classes qui peuvent être instanciées Encoder directement un nombre fixe de comportementsEncoder directement un nombre fixe de comportements Définir un plus petit ensemble de comportements Définir un plus petit ensemble de comportements fondamentaux qui peuvent être composés

Factory Design Patterns Imprimer la trace d’un programme public interface Trace { // turn on and off debugging public void setDebug( boolean debug ); // write out a debug message public void debug( String message ); // write out an error message public void error( String message ); }

Factory Design Patterns Imprimer la trace dans un fichier public class FileTrace implements Trace { private java.io.PrintWriter pw; private boolean debug; public FileTrace() throws java.io.IOException { // a real FileTrace would need to obtain the filename somewhere // for the example I'll hardcode it // a real FileTrace would need to obtain the filename somewhere // for the example I'll hardcode it pw = new java.io.PrintWriter( pw = new java.io.PrintWriter( new java.io.FileWriter( "c:\trace.log" ) ); } public void setDebug( boolean debug ) { this.debug = debug; } public void debug( String message ) { if( debug ) { // only print if debug is true pw.println( "DEBUG: " + message ); pw.flush(); } } public void error( String message ) { // always print out errors pw.println( "ERROR: " + message ); pw.flush(); } } new java.io.FileWriter( "c:\trace.log" ) ); } public void setDebug( boolean debug ) { this.debug = debug; } public void debug( String message ) { if( debug ) { // only print if debug is true pw.println( "DEBUG: " + message ); pw.flush(); } } public void error( String message ) { // always print out errors pw.println( "ERROR: " + message ); pw.flush(); } }

Factory Design Patterns Imprimer la trace sur la console public class SystemTrace implements Trace { private boolean debug; public void setDebug( boolean debug ) { this.debug = debug; } public void debug( String message ) { if( debug ) { public class SystemTrace implements Trace { private boolean debug; public void setDebug( boolean debug ) { this.debug = debug; } public void debug( String message ) { if( debug ) { //only print if debug is true System.out.println( "DEBUG: " + message); } } //only print if debug is true System.out.println( "DEBUG: " + message); } } public void error( String message ) { // always print out errors System.out.println( "ERROR: " + message ); } } public void error( String message ) { // always print out errors System.out.println( "ERROR: " + message ); } }

Factory Design Patterns Pour utiliser l’un ou l’autre système //... some code... SystemTrace log = new SystemTrace(); //... some code... SystemTrace log = new SystemTrace(); //... code... log.debug( "entering loog" ); //... etc...

Factory Design Patterns Factory pattern: principes (2) Les patrons de création rendent le designLes patrons de création rendent le design plus flexibleplus flexible pas nécessairement plus petitpas nécessairement plus petit Les patrons de création fournissent diverses manièresLes patrons de création fournissent diverses manières de supprimer les références explicites aux classes concrètesde supprimer les références explicites aux classes concrètes dans la partie du code où doit se faire l’instanciationdans la partie du code où doit se faire l’instanciation

Factory Design Patterns Factory pattern: Principes (3) Créer une abstraction qui décide quelle classe, parmi celles qui sont acceptables, il faut rendre.Créer une abstraction qui décide quelle classe, parmi celles qui sont acceptables, il faut rendre. Par la suite, il suffit d’invoquer les méthodes de l’instance de cette classe sans connaître de quelle classe il s’agit exactement.Par la suite, il suffit d’invoquer les méthodes de l’instance de cette classe sans connaître de quelle classe il s’agit exactement. Un patron simple de “factory” rend une instance d’une des nombreuses classes acceptables en fonction des données qui lui sont fournies.Un patron simple de “factory” rend une instance d’une des nombreuses classes acceptables en fonction des données qui lui sont fournies. En général,En général, toutes les classes qui sont rendues possèdent un ancêtre commun et des méthodes communes,toutes les classes qui sont rendues possèdent un ancêtre commun et des méthodes communes, toutefois chacune accomplit ses tâches différemment et est optimisée pour différentes sortes de donnéestoutefois chacune accomplit ses tâches différemment et est optimisée pour différentes sortes de données

Factory Design Patterns Factory pattern: Principes (4) La classe Factory décide de la sous-classe ( Child1 ou Child2 ) qui sera instanciéeLa classe Factory décide de la sous-classe ( Child1 ou Child2 ) qui sera instanciée

Factory Design Patterns Factory pattern: exemple public class Parent { protected String first; protected String first; protected String second; protected String second; … } public class Child1 extends Parent {} public class Child2 extends Parent {} public class ParentFactory { public Parent getParent(String argument) public Parent getParent(String argument) { if (argument.equals(…)) if (argument.equals(…)) return new Child1(argument); return new Child1(argument); else else return new Child2(argument); return new Child2(argument); } } } }