Seance 10 : Patron Chaîne de responsabilité

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Dans le contexte d'une interface graphique avec une aide contextuelle, quel est un bénéfice de l'utilisation du patron Chaîne de responsabilité?

  • Assurer que chaque requête d'aide est traitée par un seul objet.
  • Découpler l'objet demandant l'aide des objets pouvant la fournir, offrant ainsi plus de flexibilité. (correct)
  • Permettre à l'objet émetteur de la requête de connaître explicitement qui va traiter la requête.
  • Coupler fortement l'objet demandant de l'aide avec tous les objets susceptibles de fournir de l'aide.

Le patron Chaîne de responsabilité garantit que chaque requête sera nécessairement traitée par un objet de la chaîne.

False (B)

Quel est le principal avantage du patron Chaîne de responsabilité en termes de couplage entre les objets?

réduction du couplage

Dans le patron Chaîne de responsabilité, une requête est passée à travers une chaîne d'objets jusqu'à ce qu'un objet la ______.

<p>traite</p> Signup and view all the answers

Associez les éléments suivants du patron Chaîne de responsabilité à leur description:

<p>Client = L'objet qui initie la requête. Handler = Interface définissant la méthode de traitement de la requête. ConcreteHandler = Implémentation spécifique du Handler qui traite la requête, ou la passe au successeur. Successor = Le prochain Handler dans la chaîne.</p> Signup and view all the answers

Dans un système d'approbation de congés utilisant le patron Chaîne de responsabilité, si un employé demande 15 jours de congé, qui approuvera initialement cette demande si la chaîne est composée d'un chef d'équipe, d'un chef de projet, et des ressources humaines?

<p>Le chef de projet (D)</p> Signup and view all the answers

Le patron Chaîne de responsabilité est approprié lorsque l'on sait à l'avance quel objet doit traiter une requête.

<p>False (B)</p> Signup and view all the answers

Outre l'aide contextuelle, donnez un exemple d'application du patron Chaîne de responsabilité.

<p>gestion des événements</p> Signup and view all the answers

L'objectif principal du patron Chaîne de responsabilité est de ________ entre l'émetteur d'une requête et ses receveurs.

<p>éviter le couplage</p> Signup and view all the answers

Quelle est la responsabilité de la méthode handleRequest() dans une classe Handler concrète?

<p>Traiter la requête si elle peut la gérer, sinon la passer au successeur. (A)</p> Signup and view all the answers

Dans le patron Chaîne de responsabilité, tous les Handlers doivent implémenter exactement la même logique de traitement pour chaque requête.

<p>False (B)</p> Signup and view all the answers

Comment la flexibilité dans l'affectation des responsabilités est-elle accrue grâce au patron Chaîne de responsabilité?

<p>configuration à l'exécution</p> Signup and view all the answers

La référence à l'objet successeur dans le patron Chaîne de responsabilité est généralement stockée dans une variable appelée ________.

<p>nextApprobateur</p> Signup and view all the answers

Quel est un inconvénient potentiel de l'utilisation du patron Chaîne de responsabilité?

<p>Complexité accrue dans la gestion des requêtes qui ne peuvent pas être traitées. (A)</p> Signup and view all the answers

Associez les concepts suivants à leur rôle dans le patron Chaîne de responsabilité :

<p>aPrintButton = Initiateur de la demande d'aide aPrintDialog = Premier gestionnaire possible de la demande d'aide anApplication = Gestionnaire de secours si <code>aPrintDialog</code> ne peut pas gérer la demande Aide spécifique = Fournie par <code>aPrintDialog</code> si possible</p> Signup and view all the answers

Quelle est la principale conséquence d'un mauvais usage du patron Chaîne de responsabilité, où de nombreux objets sont inclus dans la chaîne sans raison valable?

<p>Diminution de la lisibilité et augmentation de la complexité du code. (A)</p> Signup and view all the answers

Le patron Chaîne de responsabilité encourage le couplage fort entre l'objet qui initie la requête et les objets qui peuvent la traiter.

<p>False (B)</p> Signup and view all the answers

Décrivez brièvement une situation où l'utilisation de l'héritage pourrait être bénéfique dans une implémentation du patron Chaîne de responsabilité.

<p>spécialiser traitement requêtes</p> Signup and view all the answers

L'interface commune implémentée par les objets d'une chaîne de responsabilité permet de traiter la requête et d'appeler le ________.

<p>successeur</p> Signup and view all the answers

Dans le diagramme de classes générique du patron Chaîne de responsabilité, quel est le rôle de la classe Handler?

<p>Définir l'interface pour traiter les requêtes et maintenir une référence au successeur. (B)</p> Signup and view all the answers

Flashcards

Chaîne de responsabilité

Un patron de conception où les demandes sont traitées par une chaîne d'objets.

Contexte du patron

Plusieurs objets peuvent traiter une requête, mais l'objet exact n'est pas connu d'avance.

Avantage: couplage réduit

Diminue le couplage en laissant chaque objet avoir une référence à sont successeur.

Avantage: flexibilité accrue

Permet de configurer dynamiquement l'affectation des responsabilités aux objets.

Signup and view all the flashcards

Inconvénient potentiel

Il n'y a aucune garantie que la requête soit traitée si aucun objet ne peut la gérer.

Signup and view all the flashcards

Client

Objet qui lance la requête dans une chaîne de responsabilité.

Signup and view all the flashcards

Gestionnaire (Handler)

Interface ou classe abstraite définissant la méthode pour traiter les requêtes.

Signup and view all the flashcards

Gestionnaire concret

Implémentation concrète du gestionnaire qui traite les requêtes ou les transmet.

Signup and view all the flashcards

HandleRequest()

Méthode utilisée pour envoyer la requête à travers la chaîne.

Signup and view all the flashcards

Study Notes

Exemple de problème de conception

  • Le patron Chaîne de responsabilité permet de gérer une interface graphique avec une aide contextuelle.
  • Un utilisateur peut obtenir de l'aide en cliquant sur F1.
  • L'aide affichée dépend de la partie sélectionnée de l'interface et de son contexte.
  • Un message d'aide plus général peut être affiché si l'aide spécifique n'est pas disponible.
  • Une requête d'aide est traitée par plusieurs objets de l'interface, en fonction du contexte et du niveau de spécificité de l'aide.
  • Le problème est que l'objet qui fournit l'aide n'est pas connu explicitement de celui qui émet la requête.
  • On ne veut pas coupler l'objet qui émet la requête à tous les objets possibles pour répondre à la requête.

Solution proposée

  • Il est proposé de séparer l'objet qui initie une requête de l'objet qui y répond, offrant à plusieurs objets la possibilité de la traiter.
  • La requête va être passée par un chaîne d'objets jusqu'à ce qu'un objet la traite.
  • Une chaîne d'objets est construite une interface commune pour traiter la requête et pour appeler le successeur dans la chaîne, pour cela une interface HelpHandler est implémentée.

Contexte du patron Chaîne de responsabilité

  • Plusieurs objets peuvent traiter une requête, et l'objet qui la traitera n'est pas connu à l'avance.
  • Le but est d'émettre une requête sans spécifier explicitement l'objet qui la traitera.
  • L'ensemble des objets qui peuvent traiter une requête doit être spécifié de façon dynamique.

Solution

  • La solution est d'éviter de coupler l'initiateur d'une requête à l'objet qui la recevra, en donnant à plusieurs objets la chance de traiter la requête.
  • Enchaîner les objets receveurs et passer la requête à travers la chaîne jusqu'à ce qu'un objet la traite.

Structure Générique

  • Structure générique du patron selon GoF (Gang of Four) inclut les éléments suivants :
    • Client
    • Handler qui est une interface
    • ConcreteHandler qui implémente l'interface Handler
    • handleRequest()

Avantages et inconvénients

  • Avantages : Réduction du couplage et grande flexibilité dans l'affectation des responsabilités.
  • Inconvénients : Il n'y a pas de garantie que la requête soit traitée à la fin de la chaîne.

Exemple d'application

  • Un exemple est l'approbation de congé dans une compagnie :
    • Si le nombre de jours < 10, le congé est approuvé par le chef d'équipe.
    • Si le nombre de jours > 10 mais < 20, le congé est approuvé par le chef de projet.
    • Si le nombre de jours > 20 mais < 30, le congé est approuvé par les ressources humaines.
    • Sinon, l'approbation doit subir un traitement manuel.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser