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.
2
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 3
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.
5
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.
6
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.
8
9. AVANTAGES
• Les isolats classes concrètes.
• Rend échanger familles de produits faciles.
• Favorise la cohérence (cohérence) parmi les produits.
9
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 10
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.
11
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
13
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
14
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.
15
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.
18
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é.
19
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.
20
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
23
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.
24
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.
25
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
27
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.
30
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.
31
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:
33
34. Avantage
• Permet à deux ou plusieurs objets incompatibles de
communiquer et d'interagir
• Améliore la réutilisabilité des anciennes fonctionnalités
34
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. 35
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.
36
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.
37
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
40
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.
41
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.
42
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
45
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.
46
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.
47
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
50
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.
51
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.
52
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.
55
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.
56
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.
57
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
62
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.
63
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.
64
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
67
68. QUAND UTILISER
• Vous avez besoin d'une référence plus polyvalent ou
sophistiqué à un objet d'un simple pointeur.
68
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.
69
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.
70
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
75
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.
76
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.
77
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.
81
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.
82
85. Avantages
• Facile à modifier et d'étendre la grammaire
• L’implémentation de la grammaire est facile
85
86. Quand utiliser
• La grammaire de la langue est simple.
• L'efficacité n'est pas une préoccupation essentielle.
86
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.
87
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
88
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.
89
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.
90
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.
94
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.
95
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.
96
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.
99
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.
100
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.
101
104. Avantages
• Résumé de couplage entre le sujet et l'observateur
• Prise en charge de la communication par radiodiffusion
104
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.
105
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.
106
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
107
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.
108
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.
109
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.
110
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.
111
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.
112
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.
115
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.
116
119. Avantages
• Permet d'ajouter facilement de nouvelles opérations
• Recueille les opérations connexes et sans rapport avec
celles sépare
119
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.
120
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.
121
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.
122
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).
124