Les patrons de comportement

Les onze patrons de comportement du catalogue GoF : Chaîne de responsabilité, Commande, Interpréteur, Itérateur, Médiateur, Mémento, Observateur, État, Stratégie, Patron de méthode et Visiteur. Intention, participants et exemples de code.

  • 33 cartes
  • 3 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

Quelques cartes du deck

  • Chaîne de responsabilité : de quoi s'agit-il ?

    Voir la réponse

    Patron de comportement qui fait passer une demande le long d'une suite de maillons, jusqu'à ce que l'un d'eux la traite.

    L'émetteur ne sait pas qui répondra. Chaque maillon traite la demande ou la passe au suivant, comme une demande de remboursement qui monte de valideur en valideur.

  • Qu'affiche ce programme ?

    ```python
    class Sujet:
    def __init__(self):
    self.abonnes = []
    def notifier(self, msg):
    for a in list(self.abonnes):
    a(msg)

    s = Sujet()
    a = lambda m: print("A", m)
    b = lambda m: print("B", m)
    s.abonnes += [a, b]
    s.notifier("un")
    s.abonnes.remove(a)
    s.notifier("deux")
    `

    • A un, B un, B deux
    • A un, B un, A deux
    • A un, B un, A deux, B deux
    • B un, A un, B deux
    Voir la réponse

    A un, B un, B deux

    Le premier appel prévient les abonnés dans l'ordre d'inscription, A puis B. Après le retrait de A, seul B est prévenu pour « deux ». Sortie exécutée sous Python.

  • Dans l'Observateur, le … garde la liste de ses abonnés et appelle leur méthode de mise à jour à chaque changement d'état.

    Voir la réponse

    Dans l'Observateur, le sujet garde la liste de ses abonnés et appelle leur méthode de mise à jour à chaque changement d'état.

    Le sujet ne connaît ses abonnés que par une interface : on peut en ajouter ou en retirer sans toucher à son code.

  • Commande : de quoi s'agit-il ?

    Voir la réponse

    Patron de comportement qui transforme une demande en objet, pour pouvoir la stocker, la mettre en file, l'annuler ou la rejouer.

    L'objet commande porte l'action et ses paramètres, avec souvent executer() et annuler(). Une pile de commandes donne l'historique d'un éditeur et son annulation.

  • Quel valideur approuve une demande de 800 euros ?

    ```python
    class Valideur:
    def __init__(self, nom, plafond, suivant=None):
    self.nom, self.plafond, self.suivant = nom, plafond, suivant
    def traiter(self, montant):
    if montant <= self.plafond:
    return self.nom
    return self.suivant.traiter(montant)

    chaine = Valideur("chef", 500, Valideur("directeur", 2000, Valideur("PDG", 10000)))
    print(chaine.traiter(800))
    `

    • chef
    • directeur
    • PDG
    • chef puis directeur
    Voir la réponse

    directeur

    800 dépasse le plafond du chef (500) : la demande passe au maillon suivant, le directeur (2000), qui la traite et arrête la chaîne. Le PDG n'est jamais appelé.