Patrons de conception Flashcards

1
Q

Dessinez la structure du patron de conception structurel Composite

A

https://refactoring.guru/images/patterns/diagrams/composite/structure.png

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Définissez l’intention du patron structurel Composite

A

Traiter les objets individuels et les objets composés récursivement et uniformément à l’aide d’une structure en arbre

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Identifiez les raisons de l’application du patron structurel Composite (2)

A
  • Besoin d’une structure récursive (arbre)

- Besoin d’un traitement uniforme d’éléments composés et simple (Leaf / Composite)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Identifiez les conséquences du patron structurel Composite (+2, -1) (RefacGuru -1)

A

+ Uniformité : Traitement des composants de manière uniforme (Leaf / Composite)
+ Extensibilité : Nouvelles sous-classes de Component fonctionnent partout où les anciennes fonctionnent
- Coût : Parfois implique un grand nombre d’objets

Refactoring Guru
- Difficulté de compréhension : Lorsque les classes dérivées sont trop différentes, l’interface Component est surgénéralisé

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Identifiez les critères d’implantation du patron structurel Composite (4)

A
  • Component connait son parent?
  • Interface uniforme entre Leaf et Composite?
  • Responsable de la destruction des enfants ?
  • Allouer aucun espace de stockage pour Component (Classe de base)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Dessinez la structure du patron de conception structurel Proxy

A

https://refactoring.guru/images/patterns/diagrams/proxy/structure-indexed.png

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Définissez l’intention du patron structurel Proxy

A

Fournir une doublure pour un autre objet afin d’en contrôler son accès, ce qui permet de faire des requêtes avant ou après la requête de l’objet initial

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Identifiez les raisons de l’application du patron structurel Proxy (1) (RefacGuru 3)

A
  • Besoin d’une référence plus versatile qu’un pointeur

Refactoring Guru

  • Initialisation paresseuse du service
  • Exécution d’un service externe
  • Besoin d’une cache des actions réalisées avec le service
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Identifiez les conséquences du patron structurel Proxy (Refactoring Guru +3, -1)

A

+ Abstraction du contrôle d’un service
+ Contrôle de la durée de vie d’un objet
+ Fonctionne même lorsque le service n’est pas disponible
- Délai de la réponse du service

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Dessinez la structure du patron de conception structurel Decorator

A

https://refactoring.guru/images/patterns/diagrams/decorator/structure-indexed.png

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Définissez l’intention du patron structurel Decorator

A

Attacher dynamiquement des responsabilités additionnelles à un objet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Identifiez les raisons de l’application du patron structurel Decorator (2)

A
  • Désir d’ajouter/enlever des responsabilités dynamiquement à des objets individuels
  • Trop difficile ou impossible d’utiliser l’héritage pour étendre les responsabilités d’un objet
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Identifiez les conséquences du patron structurel Decorator (+2, -2) (Refac Guru -2)

A

+ Flexibilité : Permet de choisir les responsabilités «à la carte» dynamiquement pour un objet
+ Évite les classes de base complexe : Division de ses responsabilités par les décorateurs
- Difficile d’identifier les objets : Composition de décorateurs implique que l’objet change ses responsabilités
- Coût : Parfois implique un grand nombre d’objets

Refactoring Guru

  • Difficile d’implémenter des décorateurs sans que l’ordre est une importance
  • Difficile d’enlever un décorateur précis d’une composition de décorateur
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Identifiez les critères d’implantation du patron structurel Decorator (4)

A
  • Uniformité et conformité de l’interface
  • Classe abstraite de Decorator facultative
  • Garder les classes de Component légères
  • Changer l’objet avec des enrobages plutôt qu’à l’interne
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Dessinez la structure du patron de conception structurel Facade

A

https://refactoring.guru/images/patterns/diagrams/facade/structure-indexed.png

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Définissez l’intention du patron structurel Facade

A

Fournir une interface simplifié d’un groupe d’interfaces provenant d’un sous-système

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Identifiez les raisons de l’application du patron structurel Facade (3)

A
  • Fournir une interface simple à un sous-système complexe
  • Éviter un couplage fort entre les clients et les classes abstraites
  • Implanter en plusieurs couches
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Identifiez les conséquences du patron structurel Facade (+3) (Refac Guru -1)

A

+ Vue simplifiée d’un sous-système qui est suffisante pour la plupart des clients
+ Modularité : Découple les clients et le sous-système
+ Simplification des communications entre sous-système

Refactoring Guru
- Danger d’un God Object (Objet qui fait tout)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Identifiez les critères d’implantation du patron structurel Facade (4)

A
  • Classe abstraite où les classes dérivées définissent des interfaces différentes ?
  • Classes publiques ou privées ?
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Dessinez la structure du patron de conception créationnel Singleton

A

https://refactoring.guru/images/patterns/diagrams/singleton/structure.png

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Définissez l’intention du patron créationnel Singleton

A
  • Avoir une seule instance d’une classe

- Fournir un point d’accès global à cette instance

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Identifiez les raisons de l’application du patron créationnel Singleton (3) (Refac Guru 1)

A
  • Vouloir avoir une instance unique
  • Vouloir accéder à l’instance sans modification de code

Refactoring Guru
- Besoin d’un contrôle stricte sur des variables globales

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Identifiez les conséquences du patron créationnel Singleton (+3, -1) (Refac Guru +2, -3)

A

+ Réduction de la pollution du namespace global
+ Contrôle le nombre d’instantiation d’une classe (Peut se limiter à plus qu’une)
+ Permet la généralisation par classes dérivées (Comparaison à une classe entièrement statique)
- Implantation peut être moins efficace qu’une variable globale

Refactoring Guru
+ Point d’accès global
+ Initialisation paresseuse
- Difficile à gérer en multithreading (accès à une variable partagée)
- Difficile à tester
- Danger d’un God Object (Objet qui fait tout)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Identifiez les critères d’implantation du patron créationnel Singleton (2)

A
  • Opération getInstance() statique

- Enregistrement de l’instance du Singleton

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Dessinez la structure du patron de conception créationnel Abstract Factory

A

https://refactoring.guru/images/patterns/diagrams/abstract-factory/structure-indexed.png

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Définissez l’intention du patron créationnel Abstract Factory

A

Procurer une interface permettant de créer une famille
d’objets connexes ou dépendants sans spécifier leurs
classes concrètes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Identifiez les raisons de l’application du patron créationnel Abstract Factory (4)

A
  • Nécessité de l’indépendance de la création, composition et représentation des objets
  • Révéler seulement l’interface et non l’implémentation d’une librairie de classes
  • Conception d’un ensemble issue d’une famille d’objets connexes
  • Système doit fonctionner avec une famille particulière d’objets connexes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Identifiez les conséquences du patron créationnel Abstract Factory (+3, -1)

A

+ Isolation des classes concrètes
+ Facilite les changements de familles d’objets
+ Encourage la création de familles d’objets connexes
- Complexifie le support de nouveaux types d’objet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Identifiez les critères d’implantation du patron créationnel Abstract Factory (3)

A
  • Singleton ?
  • Patron Factory Method pour la création d’un produit
  • Définition d’usines extensibles
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Dessinez la structure du patron de conception comportemental Visitor

A

https://refactoring.guru/images/patterns/diagrams/visitor/structure-indexed.png

31
Q

Définissez l’intention du patron comportemental Visitor

A
  • Représenter une opération qui doit être appliquée sur plusieurs objets de classes différentes
  • Séparation d’un algorithme et des objets sur lesquelles il opère
32
Q

Identifiez les raisons de l’application du patron comportemental Visitor (3)

A
  • Structure d’objets contient plusieurs classes ayant des interfaces différentes
  • Plusieurs opérations distinctes et sans liens doivent agir sur des objets dans une structure
  • Ne pas vouloir changer l’interface des classes, mais vouloir fréquemment ajouter des opérations
33
Q

Identifiez les conséquences du patron comportemental Visitor (+2, -1) (Refac Guru -1)

A

+ Flexibilité : Visitor et structure d’objets indépendantes
+ Fonctionnalité localisée : Une fonctionnalité se retrouve à un seul endroit
- Coût de communication : Visitors Structure d’objets

Refactoring Guru
- Visitor n’aura peut-être pas accès aux attributs et méthodes privés

34
Q

Identifiez les critères d’implantation du patron comportemental Visitor (2)

A
  • Double instanciation

- Interface générale aux objets d’une structure

35
Q

Dessinez la structure du patron de conception comportemental Template Method

A

https://refactoring.guru/images/patterns/diagrams/template-method/structure-indexed.png

36
Q

Définissez l’intention du patron comportemental Template Method

A

Définir l’ordre des opérations d’un algorithme

37
Q

Identifiez les raisons de l’application du patron comportemental Template Method (3)

A
  • Définir des parties invariables d’un algorithme et laisser la possibilité de redéfinir les parties variables
  • Contrôler les extensions des sous-classes
  • Situer les comportements communs dans une classe
38
Q

Identifiez les conséquences du patron comportemental Template Method (+3, -1) (Refac Guru -2)

A

+ Inversion de contrôle
+ Favorise la réutilisation de code
+ Impose des règles de surcharge
- Classes dérivées pour spécialiser le comportement

Refactoring Guru

  • Limité par l’ordre mise en place
  • Risque de la violation du principe de substitution de Liskov (Contrat demandé par une méthode par son nom)
39
Q

Identifiez les critères d’implantation du patron comportemental Template Method (3)

A
  • Méthode template virtuelle ou non?
  • Peu ou beaucoup d’opérations primitives?
  • Convention de noms (préfixe « do »)
40
Q

Dessinez la structure du patron de conception comportemental Mediator

A

https://refactoring.guru/images/patterns/diagrams/mediator/structure-indexed.png

41
Q

Définissez l’intention du patron comportemental Mediator

A

Définir un objet encapsulant un ensemble d’interactions entre des objets pour réduire le couplage entre ces-dits objets

42
Q

Identifiez les raisons de l’application du patron comportemental Mediator (3)

A
  • Comportement de coopération qui ne peut être encapsulé à un objet individuel
  • Communication complexe entre un ensemble d’objets
  • Ordre des opérations sujet peut changer
43
Q

Identifiez les conséquences du patron comportemental Mediator (+3, -1) (Refac Guru -2)

A

+ Encapsule les communications
+ Simplifie le protocole de communication entre les objets
+ Évite de forcer la tâche de communication à un des collègues
- Danger de God Objet (Objet qui fait tout)

44
Q

Identifiez les critères d’implantation du patron comportemental Mediator (4)

A
  • Nécessité de la classe Abstract Colleague?
  • Nécessité de la classe Abstract Mediator?
  • Mediator en Singleton?
  • Membres statiques plutôt que des classes séparés?
45
Q

Dessinez la structure du patron de conception comportemental Observer (Subscriber)

A

https://refactoring.guru/images/patterns/diagrams/observer/structure-indexed.png

46
Q

Définissez l’intention du patron comportemental Observer

A

Définir une relation (1 à *) entre des objets de façon à ce qu’un changement d’état d’un objet occasionne l’avertissement de ce changement à tous les objets intéressés

47
Q

Identifiez les raisons de l’application du patron comportemental Observer (3) (Refac Guru 1)

A
  • Dépendance d’un objet à un autre
  • Changement d’état d’un objet implique d’en changer d’autres sans en savoir combien
  • Objet doit avertir d’autres sans supposer la nature des autres objets

Refactoring Guru
- Subscribers sont dépendants, mais pas toujours (dépendance dynamique)

48
Q

Identifiez les conséquences du patron comportemental Observer (+3, -2) (Refac Guru +1, -1)

A

+ Modularité : Subscribers et Publisher sont indépendants
+ Extensibilité : Ajout/Définition d’Subscriberscomme nécessaire
+ Adaptabilité : Différents Subscriberspeuvent avoir différentes vues du Publisher
- Mise à jour inattendues : Subscribersne se connaissent pas
- Coût de la mise à jour : Besoin d’indices sur ce qui a changé pour certains Subscribers

Refactoring Guru
+ Établissement de relations dynamiquement
- Subscribers sont avertis dans un ordre inconnu

49
Q

Identifiez les critères d’implantation du patron comportemental Observer (4)

A
  • Type d’implantation Subscriber - Publisher
  • Références pendantes
  • Éviter des protocoles de mise à jour spécifiques à un Observer
  • Enregistrement explicite des modifications d’intérêts
50
Q

Dessinez la structure du patron de conception comportemental Chain of Responsability

A

https://refactoring.guru/images/patterns/diagrams/chain-of-responsibility/structure-indexed.png

51
Q

Définissez l’intention du patron comportemental Chain of Responsability

A

Éviter de coupler l’émetteur et le récepteur d’une requête

52
Q

Identifiez les raisons de l’application du patron comportemental Chain of Responsability (3)

A
  • Plus d’un objet peut traiter la requête et l’objet qui la traitera n’est pas connu à priori
  • Vouloir envoyer une requête à plus d’un objet sans spécifier explicitement celui qui la traitera
  • Ensemble d’objets pouvant traiter la requête est spécifié dynamiquement
53
Q

Identifiez les conséquences du patron comportemental Chain of Responsability (+2, -1) (Refac Guru +1)

A

+ Réduction du couplage : Émetteur ne connait que le point d’entrée de sa requête
+ Augmente la flexibilité : Chaine d’exécution définie dynamiquement
- Traitement de la requête non-garanti.

Refactoring Guru
+ Contrôle l’ordre de ceux qui vont traiter la requête

54
Q

Identifiez les critères d’implantation du patron comportemental Chain of Responsability (4)

A
  • Utilisation de liens existants ? (find() dans un arbre)
  • Définir une série de requête de base dans la classe abstraite BaseHandler?
  • Code pour l’identification des types de requête?
  • Utilisation du patron Command pour encapsuler les requêtes ?
55
Q

Dessinez la structure du patron de conception comportemental Iterator

A

https://refactoring.guru/images/patterns/diagrams/iterator/structure-indexed.png

56
Q

Définissez l’intention du patron comportemental Iterator

A

Fournir une méthode d’accès séquentielle aux éléments d’une structure de données sans exposer laquelle.

57
Q

Identifiez les raisons de l’application du patron comportemental Iterator (3)

A
  • Accéder au contenu d’une structure de données en abstrayant laquelle est utilisée
  • Supporter les traversées simultanées d’une même structure de données
  • Fournir une interface uniforme pour traverser n’importe quel structure de données
58
Q

Identifiez les conséquences du patron comportemental Iterator (+4) (Refac Guru +1, -1)

A

+ Variabilité : Permet de changer le mode de traversée de la structure de données
+ Simplification de l’interface d’une structure de données
+ Traversées multiples : Possibilité d’effectuer plusieurs traversées simultanées sur un même objet
+ Réutilisation : Écriture d’algorithmes génériques pour tous les structures de données en passant par la STL

Refactoring Guru
+ Possibilité de retarder l’itération à tout moment
- Itération par itérateur peut être moins efficace pour certaines structures de données (map)

59
Q

Identifiez les critères d’implantation du patron comportemental Iterator (4)

A
  • Itérateur interne ou externe à la structure de données?
  • Itérateur ou Structure de données qui définit l’algorithme de traversée?
  • Robustesse de l’itérateur
  • Opérations additionnelles (begin(), end(), precedent())
  • Allocation dynamique sur la pile à cause du polymorphisme? Utiliser le patron Proxy
60
Q

Dessinez la structure du patron de conception comportemental Strategy

A

https://refactoring.guru/images/patterns/diagrams/strategy/structure-indexed.png

61
Q

Définissez l’intention du patron comportemental Strategy

A

Encapsuler un algorithme dans une classe pour qu’il soit interchangeable

62
Q

Identifiez les raisons de l’application du patron comportemental Strategy (4)

A
  • Classes diffèrent uniquement par leur comportement
  • Plusieurs variantes d’un algorithme sont nécessaires
  • Nécessité d’encapsuler les données d’un algorithme
  • Classe contenant plusieurs variantes d’un même algorithme
63
Q

Identifiez les conséquences du patron comportemental Strategy (+4, -3)

A

+ Support de familles d’algorithmes
+ Remplacement d’héritage par composition
+ Élimination d’énoncés conditionnels
+ Choix d’implantation libre
- Clients exposés à l’implantation
- Coût de communication supplémentaire de l’appel d’une fonction virtuelle d’un objet séparé
- Augmentation du nombre d’objets

64
Q

Identifiez les critères d’implantation du patron comportemental Strategy (3)

A
  • Tirer ou pousser pour accéder aux données ?
    (Donner uniquement les bons paramètres ou this et laisser la Strategy chercher les paramètres)
  • Composition ou agrégation pour Strategy dans Context?
  • Strategy comme template de Context?
65
Q

Dessinez la structure du patron de conception comportemental State

A

https://refactoring.guru/images/patterns/diagrams/state/structure-indexed.png

66
Q

Définissez l’intention du patron comportemental State

A

Permettre à l’objet de changer son comportement en fonction de son état

67
Q

Identifiez les raisons de l’application du patron comportemental State (2)

A
  • Comportement d’un objet dépend de son état qui varie dynamiquement
  • Opérations d’un objet contiennent des switch-cases qui sélectionne un comportement selon un état
68
Q

Identifiez les conséquences du patron comportemental State (+4, -1) (Refac Guru +1, -1)

A
\+ Isolation des comportements propres aux états
\+ Transition explicite entre les états
\+ Évite les états inconsistants
\+ Élimine les énoncés conditionnels
- Augmente le nombre de classes

Refactoring Guru
+ Facile d’ajouter de nouveaux états
- Peut être overkill

69
Q

Identifiez les critères d’implantation du patron comportemental State (3)

A
  • Context ou State qui change l’état?
  • Instanciation des états dès le départ ou instanciation dynamique
  • Héritage dynamique
70
Q

Dessinez la structure du patron de conception comportemental Command

A

https://refactoring.guru/images/patterns/diagrams/command/structure-indexed.png

71
Q

Définissez l’intention du patron comportemental Command

A
  • Encapsuler une requête pour supporter plusieurs types de requêtes
  • Permettre des files de requêtes
  • Permettre l’opération « undo/redo »
72
Q

Identifiez les raisons de l’application du patron comportemental Command (3)

A
  • Besoin d’une file de requête à exécuter plus tard
  • Fonctionnalité undo/redo
  • Fonctions passées en paramètres d’une fonction
73
Q

Identifiez les conséquences du patron comportemental Command (+4)

A

+ Découple la classe Invoke
+ Flexibilité : Fonctions dans des objets
+ Facile de créer de nouvelles Command
+ Assemblage de Command simples en une plus complexe

74
Q

Identifiez les critères d’implantation du patron comportemental Command (3)

A
  • Command indépendante ou dépendante de la classe qui l’appelle?
  • Ajout de undo/redo?
  • Conservation d’état pour undo/redo ? Utiliser patron Memento