Les patrons de structure
Les sept patrons de structure du catalogue GoF : Adaptateur, Pont, Composite, Décorateur, Façade, Poids-mouche et Procuration. Intention, participants, exemple de code et patrons qui se ressemblent.
- 23 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Comprendre
Quelques cartes du deck
Adaptateur : de quoi s'agit-il ?
Voir la réponse
Patron de structure qui convertit l'interface d'une classe existante en celle que le client attend.
Il fait travailler ensemble des classes aux interfaces incompatibles sans modifier ni l'une ni l'autre, par exemple pour brancher une ancienne API sur notre interface.
Que renvoie
prix()pour ce café ?
```java
interface Boisson { double prix(); }
class Cafe implements Boisson {
public double prix() { return 2.0; }
}
class Sucre implements Boisson {
private final Boisson b;
Sucre(Boisson b) { this.b = b; }
public double prix() { return b.prix() + 0.2; }
}
class Lait implements Boisson {
private final Boisson b;
Lait(Boisson b) { this.b = b; }
public double prix() { return b.prix() + 0.5; }
}
// new Lait(new Sucre(new Cafe())).prix()`2.72.50.72.2
Voir la réponse
2.7L'appel entre de l'enveloppe la plus extérieure vers l'intérieur, puis les prix remontent : 2,0 (café) + 0,2 (sucre) + 0,5 (lait) = 2,7. Chaque décorateur ajoute sa part au prix de ce qu'il enveloppe.
Un Décorateur et l'objet qu'il enveloppe implémentent la …, ce qui permet d'empiler plusieurs décorateurs.
Voir la réponse
Un Décorateur et l'objet qu'il enveloppe implémentent la même interface, ce qui permet d'empiler plusieurs décorateurs.
Le client ne sait pas s'il tient l'objet brut ou un objet décoré. C'est aussi ce qui distingue le Décorateur de l'Adaptateur, qui change d'interface.
Pont (Bridge) : de quoi s'agit-il ?
Voir la réponse
Patron de structure qui sépare une abstraction de son implémentation pour que les deux varient indépendamment.
Il évite l'explosion de classes : 3 télécommandes et 4 appareils font 3 + 4 classes avec un pont, au lieu de 12 par héritage.
Pour brancher une bibliothèque de paiement sur notre interface
Paiement, pourquoi écrire un Adaptateur plutôt que modifier la classe de la bibliothèque ?- Une classe existante ne peut jamais implémenter une interface supplémentaire
- L'Adaptateur rend les appels plus rapides que des appels directs
- L'Adaptateur ajoute un comportement que la bibliothèque n'a pas
- Le code de la bibliothèque ne nous appartient pas : on l'enveloppe sans y toucher
Voir la réponse
Le code de la bibliothèque ne nous appartient pas : on l'enveloppe sans y toucher
La classe adaptée vient d'ailleurs et changera avec ses versions : l'Adaptateur implémente
Paiementet traduit chaque appel vers l'objet adapté qu'il tient. Il ne fait que traduire ; ajouter un comportement est le rôle du Décorateur.