4. Introduction
Factory Method est l’un des patrons de conception les plus utilisés
Livré sous pattern créative et celui-ci fournit l’une des meilleurs façons pour créer un
objet
4
Objet
Interface
Contexte | Problématique | Solution
6. Introduction
6
Vêtement
Maillot RobePantalon
Il est fort probable que l’instanciation des différents produit
soit également réalisée dans d’autres classes
Catalogue
Boutique
On se retrouve avec un code fortement couplé, qui risque
d’être dupliqué à plusieurs endroits de l’application
Contexte | Problématique | Solution
9. Simple Factory
9
Présentation| Conception| Implémentation
La Fabrique Simple est chargée d'instancier
et de retourner le Produit Concret attendu
L'utilisateur du produit fait appel à la
Fabrique Simple pour obtenir un Produit.
L'utilisateur du produit est donc fortement couplé uniquement à la Fabrique
Simple et non à tous les produits qu'il prend en charge.
19. Factory Method
19
Présentation| Conception| Implémentation
L'entreprise évolue et a besoin de deux usines, chacune spécialisée
dans la fabrication de certains produits.
Fabrique Simple ne va plus suffire.
Vêtement
Pantalon
MainMethod
FactorySummer
MaillotColMonte
FactoryWinter
20. Factory Method
20
MaillotColMonte
Pantalon
Présentation| Conception| Implémentation
MainMethod
String modele
int coutCouture
int tempsCouture
ArrayList<String> couleurs
consommeCoutTemps()
Colorer()
Vêtement
Short
MaillotDemiManche
coudreVetement()
FactorySummer
coudreVetement()
FactoryWinter
creerModele(type,modele,listCouleurs)
Factory
21. 21
Présentation| Conception| Implémentation
Factory Method
Short.java
public class Short extends Vetement{
public Short(String modele) {
this.modele = modele;
this.coutCouture = 15;
this.tempsCouture = 5;
this.couleurs = new ArrayList<String>();
}
public void colorer(ArrayList<String> couleurs) {
for(int i=0; i<couleurs.size();i++){
this.couleurs.add(couleurs.get(i));
}
}
}
22. 22
Présentation| Conception| Implémentation
Factory Method
MaillotDemiManche.java
public class MaillotDemiManche extends Vetement{
public MaillotDemiManche(String modele) {
this.modele = modele;
this.coutCouture = 15;
this.tempsCouture = 5;
this.couleurs = new ArrayList<String>();
}
public void colorer(ArrayList<String> couleurs) {
for(int i=0; i<couleurs.size();i++){
this.couleurs.add(couleurs.get(i));
}
}
}
23. 23
Présentation| Conception| Implémentation
Factory Method
Factory.java
public abstract class Factory {
public Vetement creerModele(TypeVetement type,String
modele,ArrayList<String> listCouleurs)
{
Vetement vet = this.coudreVetement(type, modele);
vet.consommeCoutTemps();
vet.colorer(listCouleurs);
return vet;
}
public abstract Vetement coudreVetement(TypeVetement type,String modele);
}
24. 24
Présentation| Conception| Implémentation
Factory Method
FactoryWinter.java
public class FactoryWinter extends Factory{
public Vetement coudreVetement(TypeVetement type, String modele) {
Vetement vet = null;
switch(type)
{
case PANTALON:vet=new Pantalon(modele);break;
case MAILLOT:vet = new MaillotColMonte(modele);break;
}
return vet;
}
}
25. 25
Présentation| Conception| Implémentation
Factory Method
FactorySummer.java
public class FactorySummer extends Factory{
public Vetement coudreVetement(TypeVetement type, String modele) {
Vetement vet = null;
switch(type)
{
case PANTALON:vet=new Short(modele);break;
case MAILLOT:vet = new MaillotDemiManche(modele);break;
}
return vet;
}
}
26. 26
Présentation| Conception| Implémentation
Factory Method
MainMethod.java
public class MainMethod {
public static void main(String[] args) {
FactorySummer summer = new FactorySummer();
ArrayList<String> listCouleurs = new ArrayList<String>();
listCouleurs.add("rouge");
listCouleurs.add("blanc");
Vetement vetSummer = summer.creerModele(TypeVetement.PANTALON,
"short hawai", listCouleurs);
System.out.println(vetSummer);
}
}
La couture consomme:15DT et 5h
Modele: short hawai
Cout de couture:15
Temps de couture:5
Couleurs disponibles: rouge blanc
28. Conclusion
28
Le pattern Fabrique doit être utilisé pour découpler les clients des classes
concrètes à instancier, ou si l'on ne connaît pas d'avance toutes les classes
concrètes à instancier.
Pour créer des familles de produits cohérentes, on sera amené à utiliser le
design pattern Fabrique Abstraite qui répond spécifiquement à ce besoin.
Bonjour, aujourd’hui, on va présenter notre exposé intitulé le patron Factory Method, présenter par mes collégues hiba et khouloud et moi-même
Cet exposé sera organisé comme suit:
Commençons par l’introduction, ou on va définit le contexte, la problématique et la solution, cette dernière nous guide à représenter la conception et l’implémentation du Factory Simple, ainsi de Factory Method. Et enfin, on récapitule tous dans la conclusion.
Factory method est l'un des patrons de conception les plus utilisés en Java.
ce type de pattern livré sous pattern créative et celui-ci fournit l'une des meilleures façons de créer un objet.
En expliquant; Avec ce pattern, nous créons l'objet sans exposer la logique métier au client et se réfère à l'objet nouvellement créé à l'aide d'une interface commune
Supposant que le client instancie une robe mais on a supprimé cette article alors le code client va générer une exception
Par exemple, pour présenter un catalogue des produits fabriqués ou présenter les produits disponibles dans une boutique
La première solution est de regrouper l'instanciation de tous les produits dans une seule classe chargée uniquement de ce rôle.
Et les autres classes peuvent instancier des produits seulement via l’appel de SimpleFactory
Cette solution appelée Fabrique Simple est une bonne pratique de conception mais pas un design pattern. Alors on l’explique dans cette partie
Si par la suite l'entreprise évolue et a besoin de plusieurs usines, chacune spécialisée dans la fabrication de certains produits, Fabrique Simple ne va plus suffire.Dans ce cas il faut prévoir l'utilisation du design pattern Fabrique dont le diagramme UML est présenté ci-dessous.