Académique Documents
Professionnel Documents
Culture Documents
Génie Logiciel
Génie Logiciel
Génie Logiciel
Introduction au
patrons de conception
« Design patterns »
Les concepteurs expérimentés réutilise des solutions qui
ont fonctionné dans le passé
Les systèmes orientés-objet bien structurés suivent des
patrons récurrents pour les classes et objets
Les patrons qui ont fonctionné dans le passé permettent
d'être plus productif. Les conceptions qui en résultent sont
plus flexibles et réutilisables.
Master ICA Génie logiciel 6-4
Devenir un champion
aux échecs
Apprendre à développer un bon logiciel est similaire à
apprendre à bien jouer aux échecs.
D'abord apprendre les règles
Par exemple le nom des pièces, les mouvements
permis, la géométrie de l'échiquier, etc.
Puis apprendre les principes
Par exemple la valeur relative de certaines pièces, la
valeur stratégique des emplacements centraux, etc.
Cependant, pour devenir un champion aux échecs, il
faut étudier le jeu d'autres champions
Ces jeux contiennent des patrons qui doivent être
compris, mémorisés, puis appliqués de manière répétée.
MasterIlICA
y a des centaines de patrons
Génie logiciel 6-5
Devenir un champion du
développement logiciel
D'abord apprendre les règles
c.a.d. les algorithmes, les structures de données, UML, les
langages de programmation, etc.
Puis apprendre les principes
Par exemple la programmation structurée, la conception
UML, la programmation orientée-objet, la programmation
générique, etc.
Mais pour devenir un champion de la conception logicielle, il
est important d'étudier la conception d'autres champions
Ces conceptions contiennent des patrons qui doivent être
compris, mémorisés, et appliqués de manière répétée.
Il y a des centaines de patrons
Les patrons de conception sont :
« Descriptions d'objets et de classes communicantes qui sont
adaptées à la résolution d'un problème général de conception
dans un contexte particulier »
Chaque patron de conception décrit un ensemble d'objets et de
classes communicants.
Handler
Client
handleRequest() Successeur
La structure du
patron de
HandlerConcret1 HandlerConcret2 conception
«chaine de
responsabilité »
Master ICA handleRequest() handleRequest() Génie logiciel 6-14
Chaine de responsabilité
Idée : libérer un objet du besoin de savoir quel
autre objet remplit sa requête Interface du handler
abstrait pour gérer les
requêtes
Employé
Client Association reflexive :
possibilité que le handler
Client: implémente le
handleRequest()
envoie Successeur successeur – pour
une trouver leurs propres
successeurs (représenté
requête comme classe
Serveur Chef Sous-Chef d'association)
Le patron de
conception de
Handler handleRequest() handleRequest() handleRequest() la 'chaine de
Concret responsabilité'
appliqué au
problème du
Master ICA Génierestaurant
logiciel 6-15
Un autre exemple où le patron de
la chaine de responsabilité peut
être utilisé
Considérons un aide contextuelle pour une interface
utilisateur graphique
L'utilisateur clique sur le bouton d'aide
La requête d'aide est gérée par l'un objet parmi plusieurs
objets de l'interface utilisateur, mais quel sera cet objet
dépend du contexte et de la spécificité de l'aide disponible.
Le problème est que l'objet qui fournit l'aide n'est pas connu
par l'objet qui demande de l'aide.
Master ICA Génie logiciel 6-16
Chaine de responsabilité
Utilisez la chaine de responsabilité quand :
Plus d'un objet peut gérer une requête, et quel objet
peut gérer une requête donnée n'est pas connu
d'avance.
Nous voulons passer une requête vers l'un de
plusieurs objets sans spécifier le destinataire
explicitement.
L'ensemble des objets qui peuvent gérer une
requête devrait être spécifié dynamiquement.
Utiliser des patrons requiert la capacité de faire le
lien entre un patron et votre problème!
Les patrons sont validés par l'expérience, plutôt
que par des tests automatiques
A lire!
http://fr.wikipedia.org/wiki/Patron_de_conception