Design patterns - Exemples en Java
-
Upload
oussama-ben-khiroun -
Category
Software
-
view
415 -
download
2
Transcript of Design patterns - Exemples en Java
![Page 1: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/1.jpg)
OUSSAMA BEN KHIROUN
1
PATRONS DE CONCEPTION (DESIGN PATTERNS)
Exemples en Java
![Page 2: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/2.jpg)
INTRODUCTION
Un patron de conception est un arrangement caractéristique de modules, reconnucomme bonne pratique en réponse à un problème de conception d'un logiciel. Ildécrit une solution standard, utilisable dans la conception de différents logiciels.
[Wikipedia]
« Chaque patron décrit un problème qui se manifeste constamment dans notreenvironnement, et donc décrit le cœur de la solution à ce problème, d’une façon telleque l’on puisse réutiliser cette solution des millions de fois, sans jamais le faire deuxfois de la même manière »
[Christopher Alexander, 1977]
2
![Page 3: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/3.jpg)
HISTORIQUE (1/2)
3
À l’origine des travaux de l'architecte ChristopherAlexander
Intitulé : « A Pattern Language »
Année : les années 70
![Page 4: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/4.jpg)
HISTORIQUE (2/2)
Formalisés dans le livre du « Gang of Four » GoF
(Erich Gamma, Richard Helm, Ralph Johnson et JohnVlissides)
Intitulé : « Design Patterns – Elements of ReusableObject-Oriented Software »
Année : 1995
Décrit 23 patrons (« patrons GoF »)
4
![Page 5: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/5.jpg)
MOTIVATION & OBJECTIFS
Modularité – Facilité de gestion (programmation objet)
Cohésion
• Degré avec lequel les tâches réalisées par un seul module sont fonctionnellement reliées
• Une forte cohésion est une bonne qualité
Couplage
• Degré d’interaction entre les modules dans le système
• Un couplage « lâche » est une bonne qualité
Réutilisabilité – Bibliothèques, frameworks
5
![Page 6: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/6.jpg)
CATÉGORIES DE DESIGN PATTERNS
• comment faire l'instanciation et la configuration des classes et des objets
Modèle de Création (Creational)
• comment organiser les classes d'un programme dans une structure plus large (séparant l'interface de l'implémentation)
Modèle de Structure (Structural)
• comment organiser les objets pour que ceux-ci collaborent (distribution des responsabilités)
Modèle de Comportement (Behavioral)
6
![Page 7: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/7.jpg)
ANTI PATTERNS (À NE PAS FAIRE)
Ancre de bateau : un composant inutilisémais qui est gardé dans le logiciel pourdes raisons politiques, en pensant que cecode servira plus tard.
Attente active, Inter-blocages et famine
Erreur de copier/coller : La duplicationde code sans vérification entraîne desincohérences. La meilleure solution étantencore de factoriser les partiescommunes au lieu de les dupliquer.
Réinventer la roue : il est souventrecommandé d’opter pour la réutilisation
Programmation spaghetti : Ceci fait
référence à l'image d'un plat despaghetti, dans lequel il serait impossiblede modifier une petite partie du logicielsans altérer le fonctionnement de tous lesautres composants.
Architecture As Requirements :consistant à spécifier une architecture parsimple préférence ou parce qu'elle estnouvelle, alors qu'il n'y en a pas besoin etque le client n'en a pas exprimé le désir.
Architecture By Implication : consistant àne pas documenter l'architecture utiliséepar un projet et à ne pas la spécifier.
7
![Page 8: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/8.jpg)
8
![Page 9: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/9.jpg)
CATÉGORIE DE MODÈLES DE CRÉATION
Ces modèles sont très courants
pour déléguer à d'autres classes
la construction des objets.
9
FactorySingleton
PrototypeAbstract Factory
Builder
![Page 10: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/10.jpg)
SINGLETON (1/2)
Un singleton sert à contrôler le nombre d'instances d'une classe présent à unmoment donné. C'est souvent très pratique pour les classes sans état eteffectuant toujours les mêmes traitements.
Exemple : classe de connexion à une Base de Données
Il est utilisé lorsque l'on a besoin d'exactement de un objet (ou N ) pourcoordonner des opérations dans un système.
10
CREATION
Question : Comment faire en Java pour empêcher l’instanciation de plus
d'un objet d'une classe donnée ?
![Page 11: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/11.jpg)
SINGLETON (2/2)
11
CREATION
OU
![Page 12: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/12.jpg)
FACTORY (OU FABRIQUE ) (1/3)
Sert à instancier facilement des objets appartenant à des classes dérivés d'une même super classe ou implémentant des interfaces communs.
Dans ce type de patron on trouve : le client, la ou les fabriques et la ou les produits
12
CREATION
Question : Comment faire en Java pour faciliter à un client l'instanciation
d'objets filles d'une même classe mère ou implémentant une même
interface ?
![Page 13: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/13.jpg)
FACTORY (OU FABRIQUE ) : EXEMPLE (2/3)
13
CREATION
![Page 14: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/14.jpg)
FACTORY (3/3)
14
CREATION
![Page 15: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/15.jpg)
BUILDER (OU MONTEUR ) (1/2)
C'est une classe offrant des méthodes facilitant la création d'un objet composé d'un ensemble d'objets sources.
Exemple : pour construire un dessin il faut ajouter des points, des lignes, des cercles
Il ne doit pas être confondu avec la Fabrique.
15
CREATION
![Page 16: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/16.jpg)
BUILDER (OU MONTEUR ) (2/2)
16
CREATION
![Page 17: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/17.jpg)
CATÉGORIE DE MODÈLES DE STRUCTURE
Ces modèles tentent de
composer des classes pour bâtir
de nouvelles structures.
17
Adapter
FacadeComposite
Bridge FlyweightDecoratorProxy
![Page 18: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/18.jpg)
COMPOSITE
18
STRUCTURE
OBJECTIFS :
Organiser les objets en structure arborescente afin dereprésenter une hiérarchie.
Permettre à la partie cliente de manipuler un objet unique etun objet composé de la même manière.
RESPONSABILITES :
•Composant : définit l'interface d'un objet pouvant être uncomposant d'un autre objet de l'arborescence.
•Element : implémente un objet de l'arborescence n'ayant pasd'objet le composant.
•Composite : implémente un objet de l'arborescence ayant un ou desobjets le composant.
•La partie client manipule les objets par l'interface Composant.
Exemple : Modélisation tâche
élémentaire et tâche complexe
![Page 19: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/19.jpg)
FACADE (1/2)
OBJECTIFS :
Fournir une interface unique enremplacement d'un ensembled'interfaces d'un sous-système.
Définir une interface de haut niveaupour rendre le sous-système plussimple d'utilisation.
19
STRUCTURE
![Page 20: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/20.jpg)
FACADE (2/2) : EXEMPLE
20
STRUCTURE"Facade" Présente certaines fonctionnalités.
Dans ce cas, ne présente que la méthode
"operation2()" de "ClasseA" et la méthode
"operation41()" utilisant "operation4()" de
"ClasseB" et "operation1()" de "ClasseA".
![Page 21: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/21.jpg)
CATÉGORIE DE MODÈLES DE COMPORTEMENT
Ces modèles tentent de répartir
les responsabilités entre chaque
classe.
21
Template Iterator
Command Mediator
Memento
InterpreterChain of
Responsibility
ObserverStateStrategy Visitor
![Page 22: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/22.jpg)
TEMPLATE (1/2)
OBJECTIFS :
Définir le squelette d'un algorithme en déléguant certainesétapes à des sous-classes.
RESPONSABILITES :
• AbstractClasse : définit des méthodes abstraites primitives.La classe implémente le squelette d'un algorithme quiappelle les méthodes primitives.
• ConcreteClasse : est une sous-classe concrète deAbstractClasse. Elle implémente les méthodes utilisées parl'algorithme de la méthode operationTemplate() deAbstractClasse.
• La partie cliente appelle la méthode de AbstractClasse quidéfinit l'algorithme.
22
COMPORTEMENT
![Page 23: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/23.jpg)
TEMPLATE (2/2) : EXEMPLE
23
COMPORTEMENT
![Page 24: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/24.jpg)
ITERATOR
Voir utilisation des itérateurs en Java :
Classe « Iterator », Interface « Iterable »
24
COMPORTEMENT
![Page 25: Design patterns - Exemples en Java](https://reader034.fdocuments.net/reader034/viewer/2022042511/587286081a28abc7068b72a3/html5/thumbnails/25.jpg)
RÉFÉRENCES
[1] Régis POUILLER, « Design Patterns du Gang of Four appliqués à Java ». Developpez.com : http://rpouiller.developpez.com/tutoriel/java/design-patterns-gang-of-four/
[2] Mark Grand, « Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML », volume 1. Wiley, 2 édition, 2002.
25