Les design patterns
O. Boissier, G. Picard SMA/G2I/ENS Mines Saint-Etienne
Olivier.Boissier@emse.fr, Gauthier.Picard@emse.fr Septembre 2009
Design Patterns
1
Sommaire
• • • • • • Introduction Design Patterns de création Design Patterns de structure Design Patterns de comportement Usage et synthèse Bibliographie
2
Introduction
Design Patterns
3
Objectifs
• Modularité
– Facilité de gestion (technologie 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 (cadres)
4
Cohésion : "mauvais" exemple public class GameBoard { public GamePiece[ ][ ] getState() { … } // Méthode copiant la grille dans un tableau temporaire, résultat de l’appel de la méthode. public Player isWinner() { … } // vérifie l’état du jeu pour savoir s ’il existe un gagnant, dont la référence est retournée. // Null est retourné si aucun gagnant. public boolean isTie() { … } //retourne true si aucun déplacement ne peut être effectué, false sinon. public void display () { … } // affichage du contenu du jeu. Espaces blancs affichés pour chacune des // références nulles. }
GameBoard est responsable des règles du jeu et de l’affichage
5
Cohésion : "bon" exemple public class GameBoard { public GamePiece[ ][ ] getState() { … } public Player isWinner() { … } public boolean isTie() { … } } public class BoardDisplay { public void displayBoard (GameBoard gb) { … } // affichage du contenu du jeu. Espaces blancs affichés pour chacune des // références nulles. }
6
Couplage : exemple void initArray(int[] iGradeArray, int nStudents) { int i; for (i = 0; i < nStudents; i++) { iGradeArray[i] = 0; } }
Couplage entre client et initArray par le