design patterns gof fr
DESCRIPTION
TRANSCRIPT
1
les Design Patterns
Sun Certified Enterprise Architect for J2EE™
2
vous serez en mesure de répondre aux objectifs suivants J2EE technologie de l'architecte d'examen:
• Partir d'une liste, sélectionnez le modèle de conception le plus approprié pour un scénario donné.
• Indiquer les avantages de l'utilisation de modèles de conception.• Identifier le modèle de conception gamma associé à une
fonctionnalité spécifiée J2EE.
3
Discussion • Un modèle de conception est une solution commune à
un problème commun rencontré dans le développement de logiciels.• Nom - Un label pour identifier le problème, la solution, et
les conséquences d'un motif. Le nom du motif doit être descriptif et maintenue à un ou deux mots.• Description - Une brève description du modèle, un
diagramme UML, et l'échantillon de code sont tous utilisés pour aider à définir le motif.• Avantages - Décrit les avantages en utilisant le modèle
spécifié• Quand utiliser - Décrit le moment où dans la conception
de l'application, vous devez utiliser le modèle
4
Patterns créationnelles
5
• Schémas créationnel peuvent soutenir la création d'objets dans un système.• Schémas créationnel permettent aux objets d'être créé
dans un système sans avoir à identifier un type de classe spécifique dans le code, vous n'avez donc pas besoin d'écrire de grandes, code complexe pour instancier un objet.• Il fait cela en ayant la sous-classe de la classe de créer
les objets.• Toutefois, cela peut limiter le type ou le nombre d'objets
qui peuvent être créés au sein d'un système.
6
Motif Fabrique Abstraite
• Ce modèle fournit une interface pour créer des familles d'objets liés ou dépendants sans spécifier leurs classes concrètes.
7
8
• Le motif Fabrique Abstraite fournit une classe abstraite qui détermine la classe appropriée concrète à instancier pour créer un ensemble de produits de béton qui implémentent une interface standard.• Le client interagit uniquement avec les interfaces du
produit et la classe Abstract Factory.• Le client ne sait jamais sur les classes de la construction
en béton, fournies par ce modèle.• Le motif Fabrique Abstraite est similaire au modèle de
méthode de fabrique, sauf qu'il crée les familles d'objets apparentés.
9
AVANTAGES
• Les isolats classes concrètes.• Rend échanger familles de produits faciles.• Favorise la cohérence (cohérence) parmi les produits.
10
QUAND UTILISER
• Le système doit être indépendant de la façon dont ses produits sont créés, composés et représentés.• Le système doit être configuré avec l'une des multiples
familles de produits, par exemple, Microsoft Windows ou Apple classes de McIntosh.• La famille d'objets produits connexes est conçue pour
être utilisés ensemble, et vous devez respecter cette contrainte. C'est le point clé du modèle, sinon vous pourriez utiliser une méthode de fabrique.• Vous souhaitez fournir une bibliothèque de classes de
produits, et exposent que leurs interfaces, et non leurs implémentations
11
Motif Builder
• Le modèle Builder sépare la construction d'un objet complexe de sa représentation de sorte que le processus de construction mêmes peuvent créer des objets différents.• Le modèle Builder permet un objet client pour construire
un objet complexe en précisant que son type et son contenu.• Le client est protégé contre les détails de construction de
l'objet.• Cela simplifie la création d'objets complexes en
définissant une classe qui construit les instances d'une autre classe.
12
13
AVANTAGES
• Vous permet de varier la représentation interne d'un produit.• Les isolats du code de la construction et de
représentation (méthodes de service).• Vous donne plus de contrôle sur le processus de
construction
14
QUAND UTILISER
• L'algorithme pour créer un objet complexe doit être indépendante des deux parties qui composent l'objet et la manière dont ces pièces sont assemblées.
• Le processus de construction doit permettre des représentations différentes de l'objet construit
15
Motif méthode de fabrique
• Le modèle de méthode de fabrique définit une interface pour créer un objet, mais permet de les sous-classes de décider quelle classe à instancier.• La méthode permet d'usine d'une classe de reporter
l'instanciation des sous-classes, ce qui est utile pour construire des objets individuels dans un but précis, sans connaître le demandeur de la classe spécifique étant instancié.• Cela vous permet d'introduire de nouvelles classes sans
modifier le code parce que la nouvelle classe implémente seulement l'interface afin qu'il puisse être utilisé par le client.
16
17
18
Avantages
• Élimine le besoin de lier les classes d'application dans votre code.• Le code ne traite que de l'interface, vous pouvez donc
travailler avec toutes les classes qui mettent en œuvre cette interface.• Permet les sous-classes de fournir une version étendue
d'un objet, car la création d'un objet dans une classe est plus souple que la création de l'objet directement dans le client.
19
Quand utiliser
• Une classe ne peut pas nous réjouissons à la classe des objets qu'il faut créer.
• Une classe veut que ses sous-classes de spécifier les objets qu'il crée.
• Déléguer la responsabilité des classes à l'un des sous-classes d'aide de plusieurs, et vous voulez localiser la connaissance de ce qui l’aide de sous classe est le délégué.
20
Motif Prototype
• Le modèle prototype permet à un objet pour créer des objets personnalisés sans connaître leur classe exacte ou les détails de comment les créer.• Il précise les types d'objets à créer en utilisant une
instance prototypique, et crée de nouveaux objets en copiant ce prototype.• Le modèle prototype fonctionne en donnant des objets
prototypiques à un objet et initie alors la création d'objets.• La création initiatrices objet crée alors les objets en
demandant aux objets prototypiques de faire des copies d'eux-mêmes.
21
22
23
AVANTAGES
• Ajout et suppression de produits à l'exécution• Spécification de nouveaux objets en faisant varier les
valeurs• Spécification de nouveaux objets en faisant varier la
structure• Réduction sous-classes• Configuration d'une application avec les classes
dynamiquement
24
QUAND UTILISER
• Les classes à instancier sont spécifiées à l'exécution, par exemple, le chargement dynamique.• Afin d'éviter la construction d'une hiérarchie de classes
d'usines qui est parallèle à la hiérarchie des classes de produits.• Lorsque les instances d'une classe peut avoir l'une des
seules quelques combinaisons différentes de l'Etat.
25
Pattern Singleton
• Le modèle Singleton garantit qu'une classe n'a qu'un seul exemple, et fournit un point d'accès globale à cette classe.• Il s'assure que tous les objets qui utilisent une instance
de cette classe utilisent la même instance.
26
27
AVANTAGES
• Accès contrôlé à instance unique• Espace de nom réduit• Permis de raffinement des opérations et de la
représentation• Permis d'un nombre variable d'instances• Plus flexible que les opérations de la classe
28
Quant utiliser
• Il doit y avoir exactement une instance d'une classe.
29
schémas structurels
30
• Motifs structurels de contrôle des relations entre de grandes portions de vos applications.• Schémas structurels affectent les applications dans une
variété de façons, par exemple, le motif adaptateur permet à deux systèmes incompatibles pour communiquer, tandis que le modèle de façade vous permet de présenter une version simplifiée inter-face à un utilisateur sans avoir à retirer toutes les options disponibles dans le système.• Modèles structurels permettent de créer des systèmes
sans avoir à réécrire ou de personnaliser le code.• Cela fournit le système avec la réutilisabilité améliorée et
des fonctionnalités robustes.
31
pattern Adaptateur
• Le modèle de l'adaptateur agit comme un intermédiaire entre deux classes, la conversion de l'interface d'une classe afin qu'il puisse être utilisé avec l'autre.• Cela permet à des classes avec des interfaces incompatibles à
travailler ensemble.• Le motif adaptateur implémente une interface connue de ses
clients et fournit un accès à une instance d'une classe n'est pas connu pour ses clients.• Un objet adaptateur fournit la fonctionnalité d'une interface sans
avoir à connaître la classe utilisée pour implémenter cette interface.
32
33
Un adaptateur de classe utilise l'héritage multiple pour adapter une interface à l'autre:
Un adaptateur objet s'appuie sur la composition objet:
34
Avantage
• Permet à deux ou plusieurs objets incompatibles de communiquer et d'interagir• Améliore la réutilisabilité des anciennes fonctionnalités
35
QUAND UTILISER
• Vous voulez utiliser une classe existante, et son interface ne correspond pas à l'interface dont vous avez besoin• Vous voulez créer une classe réutilisable qui coopère
avec des classes sans lien ou imprévues, qui est, les classes qui n'ont pas nécessairement des interfaces compatibles.• Vous voulez utiliser un objet dans un environnement qui
prévoit une interface qui est différente de l'interface de l'objet.• Traduction de l'interface entre les sources multiples
doivent se produire.
36
Motif pont
• Le modèle de pont divise un composant complexe en deux hiérarchies d'héritage distincts mais liés:• l'abstraction fonctionnelle et l’implémentation interne.• Cela rend plus facile à changer ou l'autre aspect de la
composante de sorte que les deux peuvent varier indépendamment.
37
• Le modèle de pont est utile quand il existe une hiérarchie d'abstractions et une hiérarchie correspondante des implémentations.
• Plutôt que de combiner les abstractions et les implémentations en plusieurs catégories distinctes, le modèle implémente le Pont des abstractions et des implémentations de classes indépendantes qui peuvent être combinés de façon dynamique.
38
39
40
Avantage
• Vous permet de séparer l'interface (fonctionnalité abstraction) de la mise en œuvre• améliore l'extensibilité• Masque les détails d’implémentation des clients
41
Quand utilise
• Vous voulez éviter une liaison permanente entre une abstraction et son implémentation.• Tant les abstractions et leurs implémentations devraient être
extensible à l'aide des sous-classes.• Les changements dans l’implémentation d'une abstraction ne
devrait avoir aucun impact sur les clients, c'est vous ne devriez pas avoir à recompiler leur code.
42
pattern Composite
• Le modèle Composite vous permet de créer des structures d'arbre hiérarchique de complexité variable, tout en permettant à chaque élément de la structure de fonctionner avec une interface uniforme.• Le modèle composite combine des objets dans des
structures d'arbre pour représenter la hiérarchie soit tout ou partie de la hiérarchie.• Cela signifie que le modèle composite permet aux clients
de traiter des objets individuels et des compositions d'objets uniformément.
43
44
45
Avantage
• Définit les hiérarchies de classe comprenant des objets primitifs et objets composites• Rend plus facile d'ajouter de nouveaux types de composants
• Fournit la flexibilité de la structure et une interface facile à gérer
46
QUAND UTILISER
• Vous voulez représenter l'ensemble de la hiérarchie ou une partie de la hiérarchie des objets.• Vous voulez que les clients d'être en mesure d'ignorer la
différence entre les compositions des objets et des objets individuels.• La structure peut avoir n'importe quel niveau de
complexité, et est dynamique.
47
Pattern Décorateur
• Le pattern Décorateur vous permet d'ajouter ou supprimer des fonctionnalités de l'objet sans changer l'aspect extérieur ou la fonction de l'objet.• Il modifie la fonctionnalité d'un objet dans une manière qui est
transparente pour ses clients en utilisant une instance d'une sous-classe de la classe d'origine que les opérations de délégués à l'objet original.• Le pattern Décorateur attache des responsabilités
supplémentaires à un objet dynamique pour fournir une alternative flexible à l'évolution des fonctionnalités des objets sans utiliser d'héritage fixe.
48
49
50
AVANTAGES
• Plus de souplesse que l'héritage fixes• rester loin de classes d'entités chargées en haut dans la
hiérarchie• Simplifie le codage parce que vous écrivez une série de
classes, chacune ciblant une partie spécifique de la fonctionnalité plutôt que de coder tous les comportements dans l'objet• Améliore l'extensibilité de l'objet, car vous faites des
changements par le codage de nouvelles classes
51
QUAND UTILISER
• Vous voulez ajouter des responsabilités à des objets individuels dynamique et transparente, qui est, sans affecter d'autres objets.• Vous voulez ajouter des responsabilités à l'objet que
vous pourriez vouloir changer dans le futur.• Lorsque l'extension en dérivant fixe est impossible.
52
pattern Façade
• Le pattern Façade fournit une interface unifiée à un groupe d'interfaces dans un sous-système.• The Façade pattern defines a higher-level interface that
makes the subsystem easier to use because you have only one interface.
• Cette interface unifiée permet d'accéder à un objet sous-système en utilisant l'interface pour communiquer avec le sous-système.
53
54
55
Avantages
• Fournit une interface simple à un système complexe sans pour autant réduire les possibilités offertes par le système.• protéger les clients à partir de composants sous-
système.• Favorise faible (FAIBLE) couplage entre le sous-système
et ses clients.• Réduit couplage entre sous-systèmes, si chaque sous-
système utilise son modèle de façade propre et d'autres parties du système d'utiliser le modèle de façade pour communiquer avec le sous-système• Traduit les demandes des clients pour les sous-systèmes
qui peuvent répondre à ces demandes.
56
QUAND UTILISER
• Vous voulez offrir une interface simple pour un système complexe.• Il ya de nombreuses dépendances entre les clients et les
classes d'implémentation d'une abstraction.• Vous voulez de votre couche de sous-systèmes.
57
Motif flyweight
• Le modèle Flyweight réduit le nombre de bas-niveau, les objets détaillés dans un système par partage d'objets.• Si les instances d'une classe qui contiennent les mêmes
informations peuvent être utilisées de façon interchangeable, le modèle Flyweight permet à un programme pour éviter la dépense (Cher) d'instances multiples qui contiennent les mêmes informations en partageant une seule instance.
58
59
Logically there is an object for every occurrence of a given character in the document:
60
61
62
AVANTAGES
• Réduction du nombre d'objets à manipuler
• Réduction de la mémoire et sur les périphériques de stockage, si les objets sont conservés
63
Quand utiliser
• L'application utilise un grand nombre d'objets.• Les coûts de stockage sont élevés en raison de la
quantité d'objets.• L'application ne dépend pas de l'identité des objets.
64
pattern Proxy
• Le modèle de procuration prévoit un substitut (délégation) ou l'espace réservé (conteneur) objet à contrôler l'accès à l'objet original.
• Il existe plusieurs types d'implémentations du pattern Proxy avec le proxy à distance et par procuration virtuel étant le plus commun.
65
66
67
Avantages
• Un proxy distant peut cacher le fait qu'un objet se trouve dans un espace d'adressage différent.• Un proxy virtuel peut effectuer des optimisations, telles
que la création d'un objet sur demande.• Un proxy de protection contrôle l'accès à l'objet original
68
QUAND UTILISER
• Vous avez besoin d'une référence plus polyvalent ou sophistiqué à un objet d'un simple pointeur.
69
comportements
• Schémas comportementaux influencent la manière dont l'Etat et le comportement des flux grâce à un système.
• En optimisant la manière dont l'état et le comportement sont transférés et modifiés, vous pouvez simplifier, optimiser et augmenter la maintenabilité d'une application.
70
La chaîne de modèle de responsabilité
• La chaîne de modèle de responsabilité établit une chaîne au sein d'un système, de sorte qu'un message peut être traitée au niveau où il est d'abord reçu, ou être dirigé vers un objet qui peut la gérer.
71
72
73
74
75
Avantages
• Réduction de couplage• Flexibilité dans l'attribution des responsabilités aux objets• Permet à un ensemble de classes de se comporter
comme un tout parce que les événements produits dans une classe peut être envoyé sur les classes autre gestionnaire au sein du composite
76
Quand utiliser
• Plus d'un objet peut traiter une demande, et le gestionnaire n'est pas connu.• Vous souhaitez émettre une demande à l'un de plusieurs
objets sans spécifier explicitement le récepteur.• L'ensemble des objets qui peuvent traiter une demande
doit être spécifié dynamiquement.
77
pattern Commande
• Le schéma de commande encapsule une requête dans un objet, qui vous permet de stocker la commande, passer la commande à une méthode, et le retour de la commande comme n'importe quel autre objet.
78
79
80
81
avantages
• Sépare l'objet qui appelle l'opération de celui qui sait comment l'exécuter.• Il est facile d'ajouter de nouvelles commandes, parce que
vous n'avez pas à changer les classes existantes.
82
Quand utiliser
• Vous souhaitez paramétrer les objets par une action à effectuer.• Vous spécifiez, file d'attente, et d'exécuter des requêtes à
des moments différents.• Vous devez appuyer undo , loggin, ou de transactions.
83
Pattern interpréteur
84
85
Avantages
• Facile à modifier et d'étendre la grammaire• L’implémentation de la grammaire est facile
86
Quand utiliser
• La grammaire de la langue est simple.• L'efficacité n'est pas une préoccupation essentielle.
87
motif itérateur
• Le motif itérateur fournit une manière cohérente de façon séquentielle accéder aux éléments dans une collection qui est indépendante et distincte de la collection sous-jacente.
88
Avantages
• Le motif Iterator fournit une manière cohérente de façon séquentielle accéder aux éléments dans une collection qui est indépendante et distincte de la collection sous-jacente.• Simplifie l'interface de la collection
89
Quand utiliser
• Accéder aux contenus objet de collection, sans exposer sa représentation interne.• Soutien traversées multiples d'objets dans une collection.• Fournir une interface uniforme pour traverser les
différentes structures dans une collection.
90
Motif médiateur
• Le schéma médiateur simplifie la communication entre objets dans un système en introduisant un objet unique qui gère la distribution des messages parmi d'autres objets.• Le schéma médiateur favorise le couplage lâche en gardant les
objets de référence les uns aux autres de façon explicite, et il permet de faire varier indépendamment de leur interaction.
91
92
93
94
Avantages
• collègues découple• Simplifie protocoles d'objets• centralise le contrôle• Les composants individuels deviennent plus simples et
plus faciles à traiter, parce qu'ils n'ont plus besoin de passer directement des messages les uns aux autres• Les composants sont plus générique, parce qu'ils n'ont
plus besoin de contenir la logique pour faire face à leur communication avec les autres composants.
95
Quand utiliser
• Un ensemble d'objets de communiquer de façon bien définie, mais complexe.• Vous souhaitez personnaliser un comportement qui est répartie
entre plusieurs objets sans utiliser les sous-classes.
96
Motif Memento
• Le modèle Memento préserve un «instantané» (photo) de l'état d'un objet, de sorte que l'objet peut retourner à son état d'origine sans avoir à rendre public son contenu pour le reste du monde.
97
98
Avantages
• Préserve les frontières d'encapsulation• Simplifie l'auteur
99
Quand utiliser
• Un instantané de l'état d'un objet doit être enregistré afin qu'il peut être restauré à cet état plus tard.• En utilisant une interface directe pour obtenir l'état
exposerait les détails d'implémentation et de briser l'encapsulation de l'objet.
100
Modèles connexes
• Commande: Les commandes peuvent utiliser des souvenirs de maintenir l'état des opérations annulables.
• Itérateur: Souvenirs peut être utilisée pour l'itération comme décrit précédemment.
101
Motif observateur
• Le modèle Observateur fournit un moyen pour un composant de manière flexible diffuser des messages vers des récepteurs intéressés.• Il définit une dépendance en tête-à-plusieurs entre les
objets de sorte que quand un objet change d'état, tous ses ayants droit sont informés et mis à jour automatiquement.
102
103
Gestionnaire des changements Simple est bien quand plusieurs mises à jour ne sont pas un problème
104
Avantages
• Résumé de couplage entre le sujet et l'observateur
• Prise en charge de la communication par radiodiffusion
105
Quand utiliser
• Un changement à un objet nécessite un changement de l'autre objet et que vous ne savez pas combien d'objets ont besoin de changer.• Un objet doit être en mesure de notifier d'autres objets
sans faire d'hypothèses (supposition) sur l'identité de ces objets.
106
State Pattern
• The State pattern allows an object to alter its behavior when its internal state changes. The object appears to change its class.
107
Avantages
• Localise l'Etat le comportement spécifique et le comportement des partitions pour les différents états• Rend les transitions d'état explicites
108
Quant utiliser
• Le comportement d'un objet dépend de son état et il doit changer son comportement lors de l'exécution en fonction de cet état.• Les opérations ont grand multiparti des instructions
conditionnelles qui dépendent de l'état de l'objet.
109
Pattern de Stratégie
• The Strategy pattern defines a group of classes that represent a set of possible behaviors. • These behaviors can then be used in an application to
change its functionality.
110
Avantages
• Une alternative au sous-classement• Définit chaque comportement dans sa propre classe, ce
qui élimine les instructions conditionnelles• Plus facile à étendre un modèle à intégrer de nouveaux
comportements sans recodage de l'application.
111
QUAND UTILISER
• Beaucoup de classes connexes ne diffèrent que par leur comportement.• Vous avez besoin de différentes variantes d'un
algorithme.• Un algorithme utilise des données inconnues aux clients.
112
Méthode Template de Pattern
• Le Méthode Template de Pattern fournit une méthode qui permet de remplacer les sous-classes parties de la méthode sans le réécrire.• Définir le squelette d'un algorithme dans une opération,
report de certaines mesures pour les sous-classes.• Méthode de modèle permet de sous-classes de redéfinir
certaines étapes d'un algorithme sans changer la structure de l'algorithme.
113
114
Avantages
• Technique fondamentale pour la réutilisation de code
115
QUAND UTILISER
• Vous souhaitez mettre en œuvre les parties invariantes d'un algorithme une fois et utilisez les sous-classes pour implémenter le comportement qui peut varier.
• Lorsque comportement commun chez les sous-classes devraient être pris en compte et localisée dans une classe commune pour éviter la duplication de code.
116
Motif des visiteurs
• Le modèle des visiteurs offre une maintenable, moyen facile de représenter une opération à effectuer sur les éléments d'une structure de l'objet.
• Le modèle des visiteurs vous permet de définir une nouvelle opération sans changer les classes des éléments sur lesquels elle opère.
117
118
119
Avantages
• Permet d'ajouter facilement de nouvelles opérations• Recueille les opérations connexes et sans rapport avec
celles sépare
120
Quand utiliser
• Une structure de l'objet contient de nombreuses classes d'objets avec des interfaces différentes et que vous voulez effectuer des opérations sur ces objets qui dépendent de leurs classes concrètes.• Classes définissant la structure de l'objet changent
rarement, mais vous voulez souvent à définir de nouvelles opérations sur la structure.
121
Objets comme arguments
• Un objet visiteurs est l'argument d'une opération polymorphique Accepter sur les objets qu'il visite.• Le visiteur n'est jamais considérée comme une partie de
ces objets, même si l'alternative classique à la tendance est de distribuer le code des visiteurs à travers les classes structure de l'objet.
122
Encapsulation de Variation
• un objet de stratégie encapsule un algorithme.
• un objet Etat encapsule un comportement dépendant de l'état.
• un objet médiateur encapsule le protocole entre les objets et un objet Itératif encapsule la façon d'accéder et de traverser les composants d'un objet global.
123
Les expéditeurs et les récepteurs de découplage
124
Christopher Alexander a dit:
• Il est possible de rendre les bâtiments en enfilant (série) ainsi que les modèles, d'une manière assez lâche.• Un bâtiment a fait comme cela, est un assemblage de
motifs. Il n'est pas dense. Il n'est pas profonde. Mais il est également possible de mettre ensemble dans les modèles de telle manière que de nombreux schémas se chevauchent dans le même espace physique: le bâtiment est très dense, il a de nombreuses significations capturé dans un petit espace, et grâce à cette densité, il devient profonde (difficile à comprendre).