0% ont trouvé ce document utile (0 vote)
233 vues36 pages

Guide des Design Patterns en Développement

Ce document traite des design patterns, notamment ceux du GoF. Il présente les principes généraux des patterns ainsi que des exemples concrets tels que Singleton et Iterator.

Transféré par

Cyril Bizouarn
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
233 vues36 pages

Guide des Design Patterns en Développement

Ce document traite des design patterns, notamment ceux du GoF. Il présente les principes généraux des patterns ainsi que des exemples concrets tels que Singleton et Iterator.

Transféré par

Cyril Bizouarn
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

MyDigitalSchool

2021/2022
B3 - Développeur Web

Design Pattern
Mr Bonnet Denis

1
Design Pattern
Sommaire

Sommaire
I. Principes et Intérêt des Design Patterns
II. Les catégories de Pattern
III. La portée des patterns
IV. Le langage des patterns : UML
V. Les patterns du GoF
A. Histoire du GoF
B. Dissection d’un pattern : Singleton
C. Dissection d’un pattern : Iterator
VI. Les patterns du GRASP

Design Pattern - Bonnet Denis 2


Design Pattern
Principes

Principes et Intérêt des Design Patterns

Design Pattern - Bonnet Denis 3


Design Pattern
Généralité

Design Pattern
Généralités

● design pattern / motif conceptuel / patrons de conception / motif de conception

● ils désignent des cas récurrents et identifiés d’architecture et de conception de logiciels orientés objets

● Un Design Pattern décrit une situation fréquente et une réponse éprouvée à cette situation

● Le Design Pattern peut s'utiliser tel quel ou être adapté ou combiné avec d'autre pour répondre aux besoins

● les cas les plus généraux sont référencés dans un ouvrage considéré comme majeur : Design Patterns du GoF (Gang of Four -
GoF / Bande des Quatre)

Design Pattern - Bonnet Denis 4


Design Pattern
Généralité

Design Pattern - Bonnet Denis 5


Design Pattern
Catégories

Les catégories de Pattern

Design Pattern - Bonnet Denis 6


Design Pattern
Catégories

Catégories

les motifs conceptuels ont été classés en 3 catégories principales


● création/construction
○ ces motifs se préoccupent de régler des problèmes liés à la création ou l’instanciation des objets
● structure
○ ces motifs s’occupent des questions relatives au découplage des concepts et à l’organisation structurelle des concepts manipulés par un
logiciel.
● comportement
○ ces motifs ont pour sujet principal l’organisation de la collaboration des objets

Design Pattern - Bonnet Denis 7


Design Pattern
Portée

La portée des patterns

Design Pattern - Bonnet Denis 8


Design Pattern
Portée

Portée des patterns

On parle des Portée (Scope) pour savoir à quel niveau s’applique un Design Pattern ? Au niveau des classes ou des objets ?
● Les patrons au niveau des classes s’occupent des relations entre les classes et les sous-classes. Ces relations sont fixées statiquement à la
compilation.
○ Exemple: Les patrons de création au niveau des classes délèguent une partie de la création des objets aux sous-classes.
● Les patrons au niveau des objets s’occupent des relations entre les objets, lesquels sont plus dynamiques et peuvent être modifiées à l’exécution
○ Les patrons de création au niveau des objets délèguent la création à d’autres objets.

Design Pattern - Bonnet Denis 9


Design Pattern
Portée

Portée des patterns

Design Pattern - Bonnet Denis 10


Design Pattern
UML

Le langage des patterns : UML

Design Pattern - Bonnet Denis 11


Design Pattern
UML

UML

Le Langage de Modélisation Unifié, de l'anglais Unified Modeling Language (UML), est un langage de modélisation graphique à base de pictogrammes
conçu comme une méthode normalisée de visualisation dans les domaines du développement logiciel et en conception orientée objet.
Wikipedia

Pour décrire un Design Pattern, on utilise des diagramme de classe et/ou d’objet

Design Pattern - Bonnet Denis 12


Design Pattern
UML

Classe abstraite : Italique


Classe Lien héritage

Objet

Lien association bidirectionnelle


Lien dépendance

Lien agrégation Lien association unidirectionnelle

Lien composition

Design Pattern - Bonnet Denis 13


Design Pattern
UML

Visibilité des méthodes et attributs

Cardinalité

Design Pattern - Bonnet Denis 14


Design Pattern
GoF

Les patterns du GoF

Design Pattern - Bonnet Denis 15


Design Pattern
GoF : Histoire

Histoire du GoF

Design Pattern - Bonnet Denis 16


Design Pattern
GoF : Histoire

Formalisés dans le livre du « Gang of Four » (GoF, Erich Gamma, Richard


Helm, Ralph Johnson et John Vlissides ) intitulé Design Patterns –
Elements of Reusable Object-Oriented Software en 1994.

Les patrons de conception tirent leur origine des travaux de l'architecte


Christopher Alexander dans les années 70, dont son livre A Pattern
Language définit un ensemble de patrons d'architecture.

« Chaque patron décrit un problème qui se manifeste


constamment dans notre environnement, et donc décrit le cœur de la
solution à ce problème, d’une façon telle que l’on puisse réutiliser cette
solution des millions de fois, sans jamais le faire deux fois de la même
manière » — Christopher Alexander, 1977.

Design Pattern - Bonnet Denis 17


Design Pattern
Singleton

Dissection d’un pattern : Singleton

Design Pattern - Bonnet Denis 18


Design Pattern
Singleton

Singleton
Type : Création Portée : Objet

Objectif : Pour :
Limite le nombre d’instance de l’objet à 1 et Encapsule une ressource unique et la rend
contrôle l'accès à cet instance accessible à travers tout le système

Assure contrôle et un accès sérialisé à une


ressource partagé

Répond à quel problème?


Un objet seulement est requis pour
coordonner les actions dans un système.
Contre :
● Mal employé engendre des limitations non
nécessaires
● Utilisé à la place d’une variable globale
Quand l’utiliser? ● Problème de test unitaire
● Exactement une instance de classe est ● Peut créer des dependence cachés
requise. ● Certain client avec accès global peuvent le
● Il est nécessaire de contrôler l’accès à un modifier s’il n’est pas immuable
objet unique ● Considéré comme un ANTI-PATTERN

Design Pattern - Bonnet Denis 19


Design Pattern
Singleton

Exemple (java):

Design Pattern - Bonnet Denis 20


Design Pattern
Itérator

Dissection d’un pattern : Iterator

Design Pattern - Bonnet Denis 21


Design Pattern
Iterator

Iterator
Type : Comportement Portée : Objet

Objectif : Pour :
Permet l’accès aux éléments d’une collection ● Masque l’implémentation du parcours
sans permettre l’accès à la collection ● Découple les classes de collection et les
elle-même algorithmes de parcours
● Plus flexible que les itérateurs internes
Répond à quel problème?
Parcours de collections hétérogène ou faites
maison

Quand l’utiliser? Contre :


● L’itérateur peut ne pas savoir si un
● besoin d’accéder aux élément élément change pendant le parcours
● Peut être inutile ou néfaste si un itérateur
sans avoir besoin de la collection.
interne à la collection est déjà présent
● Besoin d’un accès multiple ou
concurrent aux éléments
● Besoin d’une interface unifié de
parcours de collection

Design Pattern - Bonnet Denis 22


Design Pattern
Iterator

Exemple (java):

Design Pattern - Bonnet Denis 23


Design Pattern
Iterator

Exemple (java):

Design Pattern - Bonnet Denis 24


Design Pattern
GRASP

Les patterns du GRASP

Design Pattern - Bonnet Denis 25


Design Pattern
GRASP

General Responsibility Assignment Software Patterns (ou Principles), abrégé en GRASP, se


composent de lignes directrices pour l'attribution de la responsabilité des classes et des objets en
conception orientée objet.

Les différents modèles et principes utilisés par les GRASP sont au nombre de 8. Tous ces modèles
répondent à certains problèmes récurrents du développement logiciel. Ils n'ont pas été conçus pour
créer une nouvelle façon de travailler, mais pour mieux documenter et normaliser l'existant à l'aide
de principes de programmation éprouvés en conception orientée objet.

GRASP est surtout une boîte à outils mentale, une aide à la conception de logiciels orientés objets.

Principes décrits en 1997 par Craig Larman (co-créateur de LeSS-méthode Agile/SCRUM) dans son
livre Applying UML and Patterns.

Design Pattern - Bonnet Denis 26


Design Pattern GRASP : Les principes
GRASP Information expert
Creator
Controller
Indirection
Low coupling
GRASP : Expert High cohesion
Polymorphism
Problème: Dans un système, quel classe doit gérer une responsabilité donnée? Protected variations
Solution: Assigner la responsabilité à la méthode qui a les information nécessaire pour la mener à Pure fabrication
bien

Design Pattern - Bonnet Denis 27


Design Pattern GRASP : Les principes
GRASP Information expert
Creator
Controller
Indirection
Low coupling
GRASP : Creator High cohesion
Polymorphism
Problème: Qui créer l’objet A? Protected variations
Solution: En règle générale, on donne la responsabilité de créer l’objet A à la classe B si un ou Pure fabrication
plusieurs cas se présentent:

● B contient ou agrège des instance de A


● B enregistre des instances de A
● B a un fort couplage avec A
● B contient les données d’initialisation de A

Design Pattern - Bonnet Denis 28


Design Pattern GRASP : Les principes
GRASP Information expert
Creator
Controller
Indirection
Low coupling
GRASP : Controller High cohesion
Polymorphism
Problème: Qui devrait gérer les évènements d’entré système? Protected variations
Solution: Une classe controller devrait gérer tout les event d’un ou plusieurs scénarios use case. Pure fabrication

Le controller est défini comme le premier objet derrière la couche UI pour recevoir et gérer les
events systèmes. Selon les principes GRASP, le controller ne gère pas forcément toutes les
interactions et représente alors une “couche” logicielle.

Design Pattern - Bonnet Denis 29


Design Pattern GRASP : Les principes
GRASP Information expert
Creator
Controller
Indirection
Low coupling
GRASP : Indirection High cohesion
Polymorphism
Problème: Où assigner une responsabilité pour éviter un couplage direct entre deux ou plusieurs Protected variations
entités? Pure fabrication
Solution: Assigner cette responsabilité à une entité tierce qui servira de médiateur.

Cette technique permet d’augmenter la réutilisabilité des classes impliqués.

Design Pattern - Bonnet Denis 30


Design Pattern GRASP : Les principes
GRASP Information expert
Creator
Controller
Indirection
Low coupling
GRASP : Low Coupling High cohesion
Polymorphism
Le couplage est une mesure de la force de connection entre 2 ou plusieurs éléments. Protected variations
Pure fabrication
Ce principe explique que plus un couplage est faible, plus on profite des bénéfices suivants:
● Faible dépendance entre les classes
● Le changement d’une classe impacte faiblement les classes couplées
● Un plus grand potentiel de réutilisabilité

Design Pattern - Bonnet Denis 31


Design Pattern GRASP : Les principes
GRASP Information expert
Creator
Controller
Indirection
Low coupling
GRASP : High Cohesion High cohesion
Polymorphism
High Cohesion est un pattern d’évaluation qui tente de garder les objets dans leur périmètre Protected variations
fonctionnel, gérables et compréhensibles. Pure fabrication

En pratique, ce principe explique qu’une classe doit rester concentré sur un sujet et ne pas se
disperser.

Design Pattern - Bonnet Denis 32


Design Pattern GRASP : Les principes
GRASP Information expert
Creator
Controller
Indirection
Low coupling
GRASP : Polymorphism High cohesion
Polymorphism
Problème: Comment gérer les alternatives basés sur un type d’objet. Protected variations
Solution: Quand des alternatives ou des comportement change en fonction de classe, il faut Pure fabrication
assigner la responsabilité à la classe qui varie.

Exemple :
● Donner le même nom de fonction à 2 méthodes alternative
● Utiliser les notions de polymorphisme de classe

Design Pattern - Bonnet Denis 33


Design Pattern GRASP : Les principes
GRASP Information expert
Creator
Controller
Indirection
Low coupling
GRASP : Protected Variation High cohesion
Polymorphism
Problème: Comment créer une entité pour que les variations de cette entité n’entre pas en collision Protected variations
avec d’autres éléments Pure fabrication
Solution: Identifier les points de variations et d’instabilités et assigner la responsabilité de créer une
interface stable autour d’eux.

En cas de variations, ce principe protège les éléments des variations d’autres éléments en les
encapsulant dans une interface et en utilisant le polymorphisme pour varier les implémentations de
cette interface.

Design Pattern - Bonnet Denis 34


Design Pattern GRASP : Les principes
GRASP Information expert
Creator
Controller
Indirection
Low coupling
GRASP : Pure fabrication High cohesion
Polymorphism
Une classe de pure Fabrication est une classe qui ne représente pas un concept métier. C’est une Protected variations
classe “technique” qui permet d’assurer un service au sein du système. Pure fabrication

Elle permet de mettre en oeuvre les autres principe/pattern.

Design Pattern - Bonnet Denis 35


Design Pattern

Fin du cours
Questions?
Commentaires?
Remarques?

Design Pattern - Bonnet Denis 36

Vous aimerez peut-être aussi