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.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. 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.7
    • 2.5
    • 0.7
    • 2.2
    Voir la réponse

    2.7

    L'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 Paiement et 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.