1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4.
Les Patrons comportementaux
Génie Logiciel :
Les patrons de Conception (Design Patterns)
Dr. Selma Belgacem Ben Mansour
ISSAT de Sousse
2020-2021
1/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Plan du cours
1. Présentation
2. Les Patrons créationnels
3. Les Patrons structuraux
4. Les Patrons comportementaux
2/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Plan du cours
1. Présentation
2. Les Patrons créationnels
3. Les Patrons structuraux
4. Les Patrons comportementaux
3/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Présentation
"Un patron de conception est une solution éprouvée à un problème
récurrent dans la conception d'applications orientées objet".
(Régis Clouard)
Un patron de conception permet de modéliser un module
élémentaire (une partie) d'un logiciel.
Les patrons de conception permettent de produire des composants
logiciel réutilisables, extensibles et facilement maintenables.
Les patrons de conception sont initialement inventées par
Christopher Alexander, un architecte américain, dans les années
70.
Les patrons de conception les plus connus sont ocialisés en 1994
dans le livre "Design Patterns : Elements of Reusable
Object-Oriented Software " des américains Gamma, Helm, Johnson
et Vlissides connus par le nom Gang of Four (GoF).
4/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Présentation
• Les patrons de conception GoF sont 23 patrons classiés sous trois
catégories :
Catégorie Création Structure Comportement
de pa-
trons
Dénition modélisation modélisation modélisation du
du processus d'une composi- comportement algo-
d'instanciation tion spécique rithmique pour des
pour des classe d'une partie du classes spéciques
spéciques logiciel
Patrons Abstract Adapter/ Chain of responsa-
Factory/ Buil- Bridge/ Com- bility/ Command/
der/ Factory posite/ Deco- Interpreter/ Ite-
Method/ rator/ Facade/ rator/ Memento/
Prototype/ Mediator/ Observer/ State/
Singleton Flyweight/ Strategy/ Template
Proxy Method/ Visitor
5/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Plan du cours
1. Présentation
2. Les Patrons créationnels
3. Les Patrons structuraux
4. Les Patrons comportementaux
6/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Singleton
Nom : Singleton
But : garantir qu'une classe n'a qu'une seule instance.
Exemple :
- Il n'existe à un instant donné qu'une seule équipe championne du
monde de football.
- Plusieurs fenêtres sont présentes sur un écran, mais il ne peut y avoir
qu'un seul gestionnaire de ces fenêtres.
Solution : la classe singleton gère sa propre instanciation, ses clients
(les classes qui communiquent avec) ne s'en chargent pas.
Structure :
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception", ENSICAEN.
7/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Singleton
Implémentation :
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception", ENSICAEN.
8/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Factory
Nom : Factory method
But : abstraire (cacher à la classe cliente) le processus
d'instanciation selon le type du produit.
Solution : déléguer la tâche de création d'un type de produit à une
classe spécique appelée Factory.
Structure :
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception", ENSICAEN.
9/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Factory
Exemple :
https://www.tutorialspoint.com/design_pattern/factory_pattern.htm
10/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Factory
Implémentation :
https://www.tutorialspoint.com/design_pattern/factory_pattern.htm
11/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Abstract Factory
Nom : Abstract Factory
But : abstraire (cacher à la classe cliente) le processus
d'instanciation selon la famille de produits.
Solution : déléguer la tâche de création d'un type de produit à des
classes spéciques aux familles des produits, appelées Concrete
Factories. Les concrete Factories héritent d'une classe Absract
Factory.
12/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Abstract Factory
Structure :
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception", ENSICAEN.
13/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Abstract Factory
Exemple :
https://www.tutorialspoint.com/design_pattern/abstract_factory_pattern.htm
14/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Abstract Factory
Implémentation :
https://www.tutorialspoint.com/design_pattern/abstract_factory_pattern.htm
15/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Plan du cours
1. Présentation
2. Les Patrons créationnels
3. Les Patrons structuraux
4. Les Patrons comportementaux
16/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Composite
Nom : Composite
But : unier la modélisation du composant et du composite tout en
gardant une hiérarchie entre les deux.
Solution : créer une interface commune implémentée par les
composants et le composite.
17/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Composite
Structure :
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception", ENSICAEN.
18/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Composite
Exemple :
Pierre Gérard, "Introduction à UML 2 Modélisation Orientée Objet de Systèmes Logiciels", Université de 19/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Composite
Implémentation :
https://fr.wikipedia.org/wiki/Objet_composite
20/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Adapter
Nom : Adapter
But : réutiliser une classe existante en l'adaptant à de nouveaux
besoins.
Solution : créer une classe adptatrice (Adapter ) qui instancie (ou
étend) la classe existante (Adaptee ) et fournir les services de
l'adapter aux classes clientes à travers une interface cible (Target ).
21/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Adapter
Structure :
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception", ENSICAEN.
22/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Adapter
Implémentation :
https://www.journaldev.com/1487/adapter-design-pattern-java
23/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Bridge
Nom : Bridge
But : réduire la dépendance dans la hiérarchie d'héritage.
Solution : dissocier les entités (Absraction) du traitement logique
(Implementor ) an de faciliter la maintenance (extension ou
modication) de chacun d'eux.
Structure :
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception", ENSICAEN.
24/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Bridge
Exemple : modélisation sans application du patron Bridge.
https://www.geeksforgeeks.org/bridge-design-pattern/
25/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Bridge
Exemple : modélisation avec application du patron Bridge.
https://www.geeksforgeeks.org/bridge-design-pattern/
26/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Bridge
Implémentation :
https://www.geeksforgeeks.org/bridge-design-pattern/
27/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Plan du cours
1. Présentation
2. Les Patrons créationnels
3. Les Patrons structuraux
4. Les Patrons comportementaux
28/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Observer
Nom : Observer
But : le changement de l'état d'un objet (sujet détenteur de
données) doit entraîner la mise à jour des états d'un ensemble
d'objet (observateurs).
Solution : le sujet devient composable par les observateurs et doit
déclencher leur mise à jour lors du changement de son état.
Structure :
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception", ENSICAEN.
29/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Observer
Exemple : Souvent le sujet représente des données et les
observateurs représentent des vues.
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception", ENSICAEN.
30/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Observer
Implémentation :
https://fr.wikipedia.org/wiki/Observateur_(patron_de_conception)
31/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Strategy
Nom : Strategy
But : unier l'accès à plusieurs variantes d'un algorithme.
Solution : encapsuler les diérentes variantes de l'algorithme dans
des classes qui implémentent une même interface accessible par la
classe cliente.
Structure :
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception", ENSICAEN.
32/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Strategy
Exemple :
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception", ENSICAEN.
Autres patrons liés :
- Il existe un autre patron de conception Policy qui généralise le patron
de conception Strategy en uniant l'accès à diérentes variantes d'un
ensemble d'algorithmes logiquement liés au lieu d'un seul algorithme.
- Le patron de conception Strategy ressemble à un autre patron de
conception de comportement Template Method mais le point de
diérence est que le patron Template Method spécie un squelette
et un comportement par défaut à l'algorithme et le met en facteur
dans une classe abstraite surchargée par des sous-classes an de
spécialiser le comportement de l'algorithme.
33/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Strategy
Implémentation :
https://www.journaldev.com/1754/strategy-design-pattern-in-java-example-tutorial
34/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Template Method
Nom : Template Method
But : unier l'accès à plusieurs variantes d'un algorithme en uniant
son squelette et son comportement par défaut.
Solution : encapsuler les diérentes variantes de l'algorithme dans
des classes qui étendent une même classe abstraite accessible par le
client responsable du choix de la variante de l'algorithme. La classe
abstraite contient une méthode qui implémente le squelette de
l'algorithme et des méthodes qui implémentent le comportement par
défaut des diérentes parties de l'algorithme.
Structure :
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception", ENSICAEN.
35/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Le patron Template Method
Implémentation :
https://www.journaldev.com/1763/template-method-design-pattern-in-java
36/37
1. Présentation 2. Les Patrons créationnels 3. Les Patrons structuraux 4. Les Patrons comportementaux
Références
Régis Clouard, "Chapitre 3 : Catalogue de patrons de conception",
ENSICAEN.
Jean-Yves Didier, "Les patrons de conception", Université de Evry.
Stefano Zacchiroli, "Génie Logiciel Avancé : Cours 5 - Conception
d'un système d'objets ", Université Paris Diderot, 2013-2014.
https://www.journaldev.com/1827/
java-design-patterns-example-tutorial
https:
//www.tutorialspoint.com/design_pattern/index.htm
https://sourcemaking.com/design_patterns
https://fr.wikipedia.org/wiki/Patron_de_conception
37/37