Examen Final Flashcards
(44 cards)
Intention du patron Composite
Traiter les objets individuels et les objets multiples, composés récursivement, de façon uniforme.
Applicabilité du patron composite
- Objets doivent être composés récursivement
- Objets dans la structure peuvent être traités uniformément
- Clients peuvent ignorer les différences entre les objets individuels et composés
Conséquences du patron composite
+ Uniformité : traite les composants uniformément sans égard à leur complexité
+ Extensibilité : Les nouvelles sous-classes de Component fonctionnent
- Coût : Peut nécessiter un grand nombre d’objet
Intention du Patron Proxy
Fournir un remplaçant ou une doublure pour un autre objet afin de contrôler l’accès à ce dernier.
Applicabilité du Patron Proxy
Ce patron est applicable dès que le besoin d’une référence plus versatile ou plus sophistiquée qu’un simple pointeur se fait sentir.
L’interface du Proxy doit correspondre à l’interface du sujet
Intention du Patron Decorator
Attacher dynamiquement des responsabilités additionnelles à un objet. Le patron Décorateur fournit une alternative flexible à la dérivation pour étendre la fonctionnalité d’une classe.
Applicabilité du Patron Decorator
Ce patron est utilisé pour ajouter des responsabilités à des objets individuels de façon dynamique et transparente, sans affecter d’autres objets.
Permet d’ajouter des responsabilités qui peuvent ensuite être retirées.
On utilise ce patron lorsqu’il n’est pas pratique de sous-classer. Parfois, un grand nombre d’extensions indépendantes sont possibles, et produiraient une explosion dans le nombre de sous-classes à supporter pour obtenir toutes les inaccessible, ce qui empêche de sous-classer.
Conséquences du Patron Decorator
+ Flexibilité : Plus flexible que l’héritage statique. Permet d’ajouter et de retirer des responsabilités en cours d’exécution en attachant ou détachant des décorateurs. Permet de choisir les responsabilités «à la carte».
+ Évite les classes racines complexes : Plutôt que d’essayer de supporter toutes les fonctionnalités dans la classe de base, les décorateurs permettent de définir des responsabilités cibl.es qui peuvent être ajoutées au besoin.
- Identité des objets : L’ajouter d’un décorateur à un objet modifie l’identité de l’objet. L’objet original et l’objet décoré sont deux objets différents, ce qui rend l’accès à l’objet original moins direct.
- Coût : Peut nécessiter un grand nombre d’objets.
Intention du Patron Visitor
Représenter une opération qui doit être appliquée sur les éléments d’une structure d’objets. Un Visitor permet de définir une nouvelle opération sans modification aux classes des objets sur lesquels l’opération va agir.
Applicabilité du Patron Visitor
Lorsqu’une structure d’objets contient plusieurs classes avec des interfaces différentes.
Lorsque plusieurs opérations distinctes et sans liens entre elles doivent agir sur des objets conservés dans une structure.
Lorsque les classes définissant la structure des objets changent rarement, mais que l’on veut fréquemment définir de nouvelles opérations sur cette structure.
Conséquences du Patron Visitor
+ Flexibilité : Les Visitors et la structure d’objets sont indépendants
+ Fonctionnalité localisée : Tout le code associé à une fonctionnalité se retrouve à un seul endroit bien identifié
- Coût de communication : Coût supplémentaire entre les Visitors et la structure
Intention du Patron Template Method
Définir le squelette d’un algorithme dans une opération, et laisser les sous-classes définir certaines étapes
Applicabilité du Patron Template Method
Pour implanter les aspects invariants d’un algorithme une seule fois et laisser les sous-classes définir les portions variables
Pour situer les comportements communs dans une classe afin d’augmenter la réutilisation de code.
Pour contrôler les extensions des sous-classes.
Conséquences du Patron Template Method
+ Inversion de contrôle : Mène à une inversion de contrôle (« Principe Hollywood : ne nous appelez pas, nous vous appellerons »)
+ Favorise la réutilisation du code
+ Surcharge : Permet d’imposer des règles de surcharge
Intention du Patron Singleton
S’assurer qu’il ne soit possible de créer qu’une seule instance d’une classe, et fournir un point d’accès global à cette instance.
Applicabilité du Patron Singleton
Lorsqu’il doit y avoir exactement une seule instance d’une classe. Et que cette instance soit accessible par un mécanisme bien identifié.
Lorsque la seule instance d’une classe doit être généralisable en sous-classant et que les clients doivent être en mesure d’utiliser l’instance généralisée sans modification à leur code.
Conséquences du Patron Singleton
+ Réduit la pollution : Réduit la pollution du namespace global
+ Permet de contrôler l’instanciation d’une classe : On peut limiter le nombre d’instance (1, 2, n)
+ Permet la généralisation par sous-classification : Comparativement à une classe équivalente dont toutes les fonctions seraient statiques
- Moins efficace : Implantation peut être légèrement moins efficaces qu’une variable globale.
Intention du Patron Mediator
Définir un objet qui encapsule comment un ensemble d’objets interagissent afin de promouvoir un couplage faible et de laisser varier l’interaction entre les objets de façon indépendante.
Applicabilité du Patron Mediator
Il existe un comportement de coopération entre des objets, qui ne peut être assigné à un objet individuel.
Un ensemble d’objets communiquent entre eux de façon bien définie mais complexe.
L’ordre des opérations peut changer à mesure que le système évolue.
Conséquences du Patron Mediator
+ Encapsule les communications
+ Simplifie le protocole entre les objets
+ Évite de forcer un ou plusieurs collègues à assumer les responsabilités de médiation
- Le Mediator peut devenir complexe et monolithique
Intention du Patron Observer
Définit une relation un à plusieurs entre des objets de façon à ce que lorsqu’un objet change d’état, que tous ses dépendants soient avertis et mis à jour automatiquement.
Applicabilité du Patron Observer
Lorsqu’une abstraction a deux aspects, l’une dépendante de l’autre.
Lorsque le fait de changer un objet implique d’en changer d’autres, sans que l’on sache combien d’autres objets doivent être changés.
Lorsqu’un objet devrait en avertir d’autres sans faire de supposition sur la nature de ces autres objets.
Conséquences du Patron Observer
+ Modularité : Le sujet et les observateurs peuvent varier de façon indépendante.
+ Extensibilité : On peut définir et ajouter autant d’observateurs que nécessaire
+ Adaptabilité : Différents observateur fournissent différentes vues du Subject.
- Mises à jour inattendues : Les Observers ne se connaissent pas
- Coût de la mise à jour : Certains Observers peuvent avoir besoin d’indices sur ce qui a changé
Intention du Patron Abstract Factory
Procure une interface permettant de créer une famille d’objets connexes ou dépendants sans spécifier leurs classes concrètes.