SlideShare une entreprise Scribd logo
1
Patrons de conception
Réalisé par :
Mohamed omri
DMRIM-SIW
2
Plan
 Introduction
 Premier exemple
 Principes et classification
 Présentation des patrons de création les
plus significatifs
 Conclusion
Problématique
 Concevoir un logiciel en OO est difficile.
 Concevoir un logiciel réutilisable en OO est plus difficile.
 Difficile de trouver les objets et les rassembler selon le
bon niveau de granularité.
 Difficile de définir les classes, les interfaces et les
relations d’héritage entre eux.
 Difficile d’établir les relations entre les classes.
 La conception doit être spécifique à un problème mais
suffisamment générale pour résoudre des future
problèmes.
3
4
Motivations
 Les besoins pour une bonne conception et
du bon code :
 Extensibilité
 Flexibilité
 Maintenabilité
 Réutilisabilité
 Les qualités internes
Meilleure spécification, construction, documentation
5
Motivations (suite)
 Augmenter la cohésion du code
 C’est d’augmenter le degré de corrélation des données entre elles.
 Diminuer le couplage
 Le couplage est le nombre de liens entre les données de classes
ou fonctions différentes.
 On minimise le couplage en maximisant la cohésion, et en
créant des interfaces qui seront les points centraux
d’accès aux autres données.
6
Design Pattern : principe
 Description d’une solution à un problème général et
récurrent de conception dans un contexte particulier
 Description des objets communicants et des classes
 Indépendant d’une application ou spécifique
 Certains patterns sont relatifs à la concurrence, à la
programmation distribuée, temps-réel
 Traduction : patron de conception
 Tous les patrons visent à renforcer la cohésion et à
diminuer le couplage
7
Historique & définition
Gang of Four : Erich Gamma, Richard Helm,
Ralph Johnson, John Vlissides
Un Design Pattern nomme, abstrait et
identifie les aspects essentiels d’une
structuration récurrente, ce qui permet de
créer une modélisation orientée objet
réutilisable
8
Design Patterns : bénéfices globaux
 Standardisation de certains concepts en
modélisation
 Capture de l’expérience de conception
 Réutilisation de solutions élégantes et
efficaces vis-à-vis du problème
 Amélioration de la documentation
 Facilité de maintenance
Types de patrons de conception :
 Les patrons sont regroupés en 3 catégories qui sont :
 Patrons de création
 Concernent le processus de la création d'objets
 Les patrons de création aident à créer des objets pour
vous, au lieu d’avoir à instancier les objets directement.
 Patrons de structure
 Concernent la composition de classes et d'objets
 Les patrons de structure aident à composer des groupes
d’objets en des structures plus larges, telles que des
interfaces utilisateur complexes.
9
Types de patrons de conception :
 Patrons de comportement
 Concernent l'interaction des classes et des objets
 Les patrons de comportement aident à définir la
communication entre les objets du système et définir
comment le flux est contrôlé.
10
11
Patrons de création
Constitution d’un design pattern
Un design pattern est défini par :
 un contexte : une situation qui engendre le problème
 un problème : le problème récurrent qui apparaît dans
ce contexte
 une solution : une résolution validée du problème Un
design pattern extrait les aspects statiques et dynamiques
de la structure et de la coopération entre les participants
clés de la conception d’application
12
Patrons de création
 Un patron de création permet de résoudre les
problèmes liés à la création et la configuration
d'objets.
 Par exemple, une classe nommée Ressources,
Application gérant toutes les ressources de
l'application ne doit être instanciée qu'une seule
et unique fois. Il faut donc empêcher la création
intentionnelle ou accidentelle d'une autre instance
de la classe. Ce type de problème est résolu par
le patron de conception "Singleton".
13
14
Singleton (création)
 Intention
 S’assurer qu’une classe a une seule instance, et fournir
un point d’accès global à celle-ci.
 Motivation
 Un seul spooler d’imprimante / plusieurs imprimantes
 Plus puissant que la variable globale
 Champs d’application
 Lorsque l’instance unique doit être extensible par
héritage, et que les clients doivent pouvoir utiliser cette
instance étendue sans modifier leur code
15
Singleton (2)
 Structure
 Participants
 instance() : méthode de classe pour accéder à l’instance
16
Singleton (3)
 Collaborations
 Les clients ne peuvent accéder à l’instance qu’à travers
la méthode spécifique
 Conséquences
 Accès contrôlé
 Pas de variable globale
 Permet la spécialisation des opérations et de la
représentation
 Permet un nombre variable d’instances
 Plus flexible que les méthodes de classe
17
Singleton (4)
 Implémentation
 Assurer l’unicité
 Sous-classes (demander quel forme de singleton dans
la méthode instance() )
 Utilisations connues
 DefaultToolkit en AWT/Java et beaucoup de
bibliothèques abstraite de GUI
 Patrons associés
 Fabrique abstraite (Abstract Factory),Monteur(Builder),
Prototype
Implémentation en java
18
19
Fabrique (création) (1)
 Intention
 Définit une interface pour la création d’un objet, mais en
laissant à des sous-classes le choix des classes à
instancier
 Permet à une classe de déléguer l’instanciation à des
sous-classes
 Synonymes : Factory method / Virtual Constructor
 Motivation
 instancier des classes, en connaissant seulement les
classes abstraites
20
Fabrique (2)
 Champs d’application
 une classe ne peut anticiper la classe de l'objet qu'elle doit
construire
 une classe délègue la responsabilité de la création à ses sous-
classes, tout en concentrant l'interface dans une classe unique
21
Fabrique (3)
 Structure en UML
22
Fabrique (4)
 Implémentation
 2 variantes principales :
 La classe Creator est une classe abstraite et ne fournit pas
d’implémentation pour la fabrication qu’elle déclare ( les sous-classes
définissent obligatoirement une implémentation)
 La classe ConcreteCreator est une classe concrète qui fournit une
implémentation par défaut pour la fabrication
 Fabrication paramétrée :
 La fabrication utilise un paramètre qui identifie la variété d’objet à
créer
 Utilisations connues
 Applications graphiques, Des hiérarchies de classes parallèles
, toolkits ou les frameworks…
 Patrons associés
 Abstract Factory, Template Method, Prototype
Fabrique (5)
 Autres avantages et variantes :
 l'utilisation de méthodes de fabrication ne laisse aucune
ambiguïté : (noms descriptifs ).
 L’Encapsulation.
23
Fabrique : exemple (6)
24
Fabrique : implémentation java
25
Fabrique : implémentation java
P. Collet 26
Fabrique : implémentation java
P. Collet 27
Fabrique : implémentation java
28
29
Fabrique abstraite (création) (1)
 Intention
 Fournir une interface pour créer des familles d’objets
dépendants ou associés sans connaître leur classe réelle
 Synonymes : Kit, Fabrique abstraite, Usine abstraite
 Motivation
 Un éditeur qui va produire plusieurs représentations d’un
document
 Champs d’application
 Indépendance de comment les objets sont créés,
composés et représentés
 Configuration d’un système par une instance d’une
multitude de familles de produits
30
Fabrique abstraite (2)
 Conception d’une famille d’objets pour être utilisés
ensemble et contrôle de cette contrainte
 Bibliothèque fournie avec seulement leurs interfaces,
pas leurs implémentations
31
Fabrique abstraite (3)
 Structure en UML
32
Fabrique abstraite (4)
 Implémentation
 Les fabriques sont souvent des singletons
 Ce sont les sous-classes concrètes qui font la création,
en utilisant le plus souvent une Fabrique
 Si plusieurs familles sont possibles, la fabrique concrète
utilise Prototype
 Patrons associés
 Singleton, Factory Method, Prototype
Fabrique abstraite: exemple (5)
33
Fabrique abstraite : implémentation java
34
Fabrique abstraite : implémentation java
35
Fabrique abstraite : implémentation java
36
Prototype création (1)
 Intention
 Indiquer le type des objets à créer en utilisant une
instance (le prototype). les nouveaux objets sont des
copies de ce prototype (clonage)
 Motivation
 ce patron permet de créer un nouvel objet par recopie
d'un objet existant
 Champs d’application :
37
38
Prototype (2)
 Structure en UML
39
Prototype (3)
 Implémentation
 il faut déclarer une classe abstraite spécifiant une
méthode abstraite (virtuelle pure en C++)
appelée clone()
 Toute classe nécessitant un constructeur
polymorphique dérivera de cette classe abstraite et
implantera la méthode clone().
 Patrons associés
 Singleton, Factory Method
Prototype (4)
40
Implémentation en java
41
Implémentation en java
42
43
Monteur (création) (1)
 Intention
 séparer la construction d'un objet complexe de sa
représentation.
 le même processus de construction peut créer
différentes représentations.
 Synonymes : builder
 Motivation
 la création d'une variété d'objets complexes à partir d'un
objet source.
44
Monteur (création) (2)
Structure en Uml
45
Monteur (3)
 Implémentation
 Plutôt que de créer un objet de A à Z c'est à dire en appelant un
constructeur, puis en configurant la valeur de ses attributs
 Encapsulez la création et l'assemblage des pièces d'un objet
complexe dans un objet Builder distinct.
 Une classe délègue la création d'objet à un objet Builder au lieu de
créer les objets directement.
 Une classe (le même processus de construction) peut déléguer à
différents objets Builder pour créer différentes représentations
d'un objet complexe.
 Patrons associés
Fabrique, Fabrique Abstraite, Patron de méthode
Exemple
46
Implémentation en java
47
Implémentation en java
48
Implémentation en java
49
Implémentation en java
50
Conclusion
Si nous n'étudions pas les patrons de
conception au niveau de la programmation
OO, nous ne pourrons pas améliorer les
logiciel, et il sera plus difficile de les
concevoir et réaliser.
51
52
Sources
 Design Patterns – Elements of Reusable
Object-Oriented Software, Addison Wesley, 1994
 http://www.dofactory.com

Contenu connexe

Tendances

Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesLilia Sfaxi
 
Bases de données réparties
Bases de données répartiesBases de données réparties
Bases de données répartiesAbdelouahed Abdou
 
gestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiquegestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiqueOussama Yoshiki
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en JavaOussama BEN KHIROUN
 
Introduction aux architectures des SI
Introduction aux architectures des SI Introduction aux architectures des SI
Introduction aux architectures des SI Heithem Abbes
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classeAmir Souissi
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications AndroidLilia Sfaxi
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats Ayed CHOKRI
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...ENSET, Université Hassan II Casablanca
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introductionneuros
 
applications-reparties
applications-repartiesapplications-reparties
applications-repartiesmourad50
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 

Tendances (20)

Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
 
Bases de données réparties
Bases de données répartiesBases de données réparties
Bases de données réparties
 
gestion de magasin vente matériels informatique
gestion de magasin vente matériels informatiquegestion de magasin vente matériels informatique
gestion de magasin vente matériels informatique
 
Cours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweightCours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweight
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Introduction aux architectures des SI
Introduction aux architectures des SI Introduction aux architectures des SI
Introduction aux architectures des SI
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classe
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications Android
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
 
Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
 
applications-reparties
applications-repartiesapplications-reparties
applications-reparties
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 

Similaire à Patrons de creation

Design patterns gof fr
Design patterns gof frDesign patterns gof fr
Design patterns gof frIt Academy
 
Module development Patterns de Création.pptx
Module development Patterns de Création.pptxModule development Patterns de Création.pptx
Module development Patterns de Création.pptxarapilatico
 
DesignPatternsISI.pdf
DesignPatternsISI.pdfDesignPatternsISI.pdf
DesignPatternsISI.pdfandre543581
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db firstZineb ELGARRAI
 
Framework Orienté objet
Framework Orienté objetFramework Orienté objet
Framework Orienté objetNSim Technology
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliquesMariem ZAOUALI
 
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)Amira Hakim
 
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...IHM'10
 
Design Pattern: Développement et Bonnes pratiques
Design Pattern: Développement et Bonnes pratiquesDesign Pattern: Développement et Bonnes pratiques
Design Pattern: Développement et Bonnes pratiquesAlex Wilfried OUATTARA
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMALoic Yon
 
Rédaction de tests unitaires avec fakes
Rédaction de tests unitaires avec fakesRédaction de tests unitaires avec fakes
Rédaction de tests unitaires avec fakesMSDEVMTL
 

Similaire à Patrons de creation (20)

Design patterns
Design patternsDesign patterns
Design patterns
 
Design patterns gof fr
Design patterns gof frDesign patterns gof fr
Design patterns gof fr
 
Module development Patterns de Création.pptx
Module development Patterns de Création.pptxModule development Patterns de Création.pptx
Module development Patterns de Création.pptx
 
DesignPatternsISI.pdf
DesignPatternsISI.pdfDesignPatternsISI.pdf
DesignPatternsISI.pdf
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
Abstract factory+adapter
Abstract factory+adapterAbstract factory+adapter
Abstract factory+adapter
 
Framework Orienté objet
Framework Orienté objetFramework Orienté objet
Framework Orienté objet
 
Cours spring
Cours springCours spring
Cours spring
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliques
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
 
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
 
Generateur de code java (GenJAVA)
Generateur de code java (GenJAVA)Generateur de code java (GenJAVA)
Generateur de code java (GenJAVA)
 
Design Pattern: Développement et Bonnes pratiques
Design Pattern: Développement et Bonnes pratiquesDesign Pattern: Développement et Bonnes pratiques
Design Pattern: Développement et Bonnes pratiques
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMA
 
Rédaction de tests unitaires avec fakes
Rédaction de tests unitaires avec fakesRédaction de tests unitaires avec fakes
Rédaction de tests unitaires avec fakes
 
Objecteering
ObjecteeringObjecteering
Objecteering
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Design patterns
Design patternsDesign patterns
Design patterns
 

Plus de omri med

composing continuos services in CoAP-based IOT
composing continuos services in CoAP-based IOT composing continuos services in CoAP-based IOT
composing continuos services in CoAP-based IOT omri med
 
melange de gaussienne
melange de gaussiennemelange de gaussienne
melange de gaussienneomri med
 
elastic business process management: state of the art and open challenges for...
elastic business process management: state of the art and open challenges for...elastic business process management: state of the art and open challenges for...
elastic business process management: state of the art and open challenges for...omri med
 
Projet security et datawarehouse
Projet security et datawarehouseProjet security et datawarehouse
Projet security et datawarehouseomri med
 

Plus de omri med (6)

I fog sim
I fog simI fog sim
I fog sim
 
composing continuos services in CoAP-based IOT
composing continuos services in CoAP-based IOT composing continuos services in CoAP-based IOT
composing continuos services in CoAP-based IOT
 
melange de gaussienne
melange de gaussiennemelange de gaussienne
melange de gaussienne
 
Sioc
SiocSioc
Sioc
 
elastic business process management: state of the art and open challenges for...
elastic business process management: state of the art and open challenges for...elastic business process management: state of the art and open challenges for...
elastic business process management: state of the art and open challenges for...
 
Projet security et datawarehouse
Projet security et datawarehouseProjet security et datawarehouse
Projet security et datawarehouse
 

Patrons de creation

  • 1. 1 Patrons de conception Réalisé par : Mohamed omri DMRIM-SIW
  • 2. 2 Plan  Introduction  Premier exemple  Principes et classification  Présentation des patrons de création les plus significatifs  Conclusion
  • 3. Problématique  Concevoir un logiciel en OO est difficile.  Concevoir un logiciel réutilisable en OO est plus difficile.  Difficile de trouver les objets et les rassembler selon le bon niveau de granularité.  Difficile de définir les classes, les interfaces et les relations d’héritage entre eux.  Difficile d’établir les relations entre les classes.  La conception doit être spécifique à un problème mais suffisamment générale pour résoudre des future problèmes. 3
  • 4. 4 Motivations  Les besoins pour une bonne conception et du bon code :  Extensibilité  Flexibilité  Maintenabilité  Réutilisabilité  Les qualités internes Meilleure spécification, construction, documentation
  • 5. 5 Motivations (suite)  Augmenter la cohésion du code  C’est d’augmenter le degré de corrélation des données entre elles.  Diminuer le couplage  Le couplage est le nombre de liens entre les données de classes ou fonctions différentes.  On minimise le couplage en maximisant la cohésion, et en créant des interfaces qui seront les points centraux d’accès aux autres données.
  • 6. 6 Design Pattern : principe  Description d’une solution à un problème général et récurrent de conception dans un contexte particulier  Description des objets communicants et des classes  Indépendant d’une application ou spécifique  Certains patterns sont relatifs à la concurrence, à la programmation distribuée, temps-réel  Traduction : patron de conception  Tous les patrons visent à renforcer la cohésion et à diminuer le couplage
  • 7. 7 Historique & définition Gang of Four : Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Un Design Pattern nomme, abstrait et identifie les aspects essentiels d’une structuration récurrente, ce qui permet de créer une modélisation orientée objet réutilisable
  • 8. 8 Design Patterns : bénéfices globaux  Standardisation de certains concepts en modélisation  Capture de l’expérience de conception  Réutilisation de solutions élégantes et efficaces vis-à-vis du problème  Amélioration de la documentation  Facilité de maintenance
  • 9. Types de patrons de conception :  Les patrons sont regroupés en 3 catégories qui sont :  Patrons de création  Concernent le processus de la création d'objets  Les patrons de création aident à créer des objets pour vous, au lieu d’avoir à instancier les objets directement.  Patrons de structure  Concernent la composition de classes et d'objets  Les patrons de structure aident à composer des groupes d’objets en des structures plus larges, telles que des interfaces utilisateur complexes. 9
  • 10. Types de patrons de conception :  Patrons de comportement  Concernent l'interaction des classes et des objets  Les patrons de comportement aident à définir la communication entre les objets du système et définir comment le flux est contrôlé. 10
  • 12. Constitution d’un design pattern Un design pattern est défini par :  un contexte : une situation qui engendre le problème  un problème : le problème récurrent qui apparaît dans ce contexte  une solution : une résolution validée du problème Un design pattern extrait les aspects statiques et dynamiques de la structure et de la coopération entre les participants clés de la conception d’application 12
  • 13. Patrons de création  Un patron de création permet de résoudre les problèmes liés à la création et la configuration d'objets.  Par exemple, une classe nommée Ressources, Application gérant toutes les ressources de l'application ne doit être instanciée qu'une seule et unique fois. Il faut donc empêcher la création intentionnelle ou accidentelle d'une autre instance de la classe. Ce type de problème est résolu par le patron de conception "Singleton". 13
  • 14. 14 Singleton (création)  Intention  S’assurer qu’une classe a une seule instance, et fournir un point d’accès global à celle-ci.  Motivation  Un seul spooler d’imprimante / plusieurs imprimantes  Plus puissant que la variable globale  Champs d’application  Lorsque l’instance unique doit être extensible par héritage, et que les clients doivent pouvoir utiliser cette instance étendue sans modifier leur code
  • 15. 15 Singleton (2)  Structure  Participants  instance() : méthode de classe pour accéder à l’instance
  • 16. 16 Singleton (3)  Collaborations  Les clients ne peuvent accéder à l’instance qu’à travers la méthode spécifique  Conséquences  Accès contrôlé  Pas de variable globale  Permet la spécialisation des opérations et de la représentation  Permet un nombre variable d’instances  Plus flexible que les méthodes de classe
  • 17. 17 Singleton (4)  Implémentation  Assurer l’unicité  Sous-classes (demander quel forme de singleton dans la méthode instance() )  Utilisations connues  DefaultToolkit en AWT/Java et beaucoup de bibliothèques abstraite de GUI  Patrons associés  Fabrique abstraite (Abstract Factory),Monteur(Builder), Prototype
  • 19. 19 Fabrique (création) (1)  Intention  Définit une interface pour la création d’un objet, mais en laissant à des sous-classes le choix des classes à instancier  Permet à une classe de déléguer l’instanciation à des sous-classes  Synonymes : Factory method / Virtual Constructor  Motivation  instancier des classes, en connaissant seulement les classes abstraites
  • 20. 20 Fabrique (2)  Champs d’application  une classe ne peut anticiper la classe de l'objet qu'elle doit construire  une classe délègue la responsabilité de la création à ses sous- classes, tout en concentrant l'interface dans une classe unique
  • 22. 22 Fabrique (4)  Implémentation  2 variantes principales :  La classe Creator est une classe abstraite et ne fournit pas d’implémentation pour la fabrication qu’elle déclare ( les sous-classes définissent obligatoirement une implémentation)  La classe ConcreteCreator est une classe concrète qui fournit une implémentation par défaut pour la fabrication  Fabrication paramétrée :  La fabrication utilise un paramètre qui identifie la variété d’objet à créer  Utilisations connues  Applications graphiques, Des hiérarchies de classes parallèles , toolkits ou les frameworks…  Patrons associés  Abstract Factory, Template Method, Prototype
  • 23. Fabrique (5)  Autres avantages et variantes :  l'utilisation de méthodes de fabrication ne laisse aucune ambiguïté : (noms descriptifs ).  L’Encapsulation. 23
  • 26. Fabrique : implémentation java P. Collet 26
  • 27. Fabrique : implémentation java P. Collet 27
  • 29. 29 Fabrique abstraite (création) (1)  Intention  Fournir une interface pour créer des familles d’objets dépendants ou associés sans connaître leur classe réelle  Synonymes : Kit, Fabrique abstraite, Usine abstraite  Motivation  Un éditeur qui va produire plusieurs représentations d’un document  Champs d’application  Indépendance de comment les objets sont créés, composés et représentés  Configuration d’un système par une instance d’une multitude de familles de produits
  • 30. 30 Fabrique abstraite (2)  Conception d’une famille d’objets pour être utilisés ensemble et contrôle de cette contrainte  Bibliothèque fournie avec seulement leurs interfaces, pas leurs implémentations
  • 31. 31 Fabrique abstraite (3)  Structure en UML
  • 32. 32 Fabrique abstraite (4)  Implémentation  Les fabriques sont souvent des singletons  Ce sont les sous-classes concrètes qui font la création, en utilisant le plus souvent une Fabrique  Si plusieurs familles sont possibles, la fabrique concrète utilise Prototype  Patrons associés  Singleton, Factory Method, Prototype
  • 34. Fabrique abstraite : implémentation java 34
  • 35. Fabrique abstraite : implémentation java 35
  • 36. Fabrique abstraite : implémentation java 36
  • 37. Prototype création (1)  Intention  Indiquer le type des objets à créer en utilisant une instance (le prototype). les nouveaux objets sont des copies de ce prototype (clonage)  Motivation  ce patron permet de créer un nouvel objet par recopie d'un objet existant  Champs d’application : 37
  • 39. 39 Prototype (3)  Implémentation  il faut déclarer une classe abstraite spécifiant une méthode abstraite (virtuelle pure en C++) appelée clone()  Toute classe nécessitant un constructeur polymorphique dérivera de cette classe abstraite et implantera la méthode clone().  Patrons associés  Singleton, Factory Method
  • 43. 43 Monteur (création) (1)  Intention  séparer la construction d'un objet complexe de sa représentation.  le même processus de construction peut créer différentes représentations.  Synonymes : builder  Motivation  la création d'une variété d'objets complexes à partir d'un objet source.
  • 45. 45 Monteur (3)  Implémentation  Plutôt que de créer un objet de A à Z c'est à dire en appelant un constructeur, puis en configurant la valeur de ses attributs  Encapsulez la création et l'assemblage des pièces d'un objet complexe dans un objet Builder distinct.  Une classe délègue la création d'objet à un objet Builder au lieu de créer les objets directement.  Une classe (le même processus de construction) peut déléguer à différents objets Builder pour créer différentes représentations d'un objet complexe.  Patrons associés Fabrique, Fabrique Abstraite, Patron de méthode
  • 51. Conclusion Si nous n'étudions pas les patrons de conception au niveau de la programmation OO, nous ne pourrons pas améliorer les logiciel, et il sera plus difficile de les concevoir et réaliser. 51
  • 52. 52 Sources  Design Patterns – Elements of Reusable Object-Oriented Software, Addison Wesley, 1994  http://www.dofactory.com