Chaîne de responsabilité (patron de conception)

Chaîne de responsabilité (patron de conception)

En génie logiciel, le patron de conception Chaîne de responsabilité permet à un nombre quelconque de classes d'essayer de répondre à une requête sans connaître les possibilités des autres classes sur cette requête. Cela permet de diminuer le couplage entre objets. Le seul lien commun entre ces objets étant cette requête qui passe d'un objet à l'autre jusqu'à ce que l'un des objets puisse répondre. Ce pattern permet aussi de séparer les différentes étapes d'un traitement.

Sommaire

Utilisation

Dès lors qu'une information doit recevoir plusieurs traitements, ou juste être transmise entre différents objets.

Un exemple en langage C++

L'exemple ci-dessous présente un système de log. Lors de la réception d'un message, ce dernier va passer d'un Logger a l'autre, déclenchant ou non le traitement associé.

#include <iostream>
#include <string>
using namespace std;
 
class Logger
{
protected:
        int level;
        Logger* next;
 
public:
        enum
        {
                ERR,
                NOTICE,
                DEBUG
        };
 
        Logger* setNext(Logger* next)
        {
                this->next = next;
                return (this->next);
        }
 
        void message(string msg, int priority)
        {
                if (priority <= this->level)
                        this->writeMessage(msg);
                else if (this->next != NULL)
                        this->next->message(msg, priority);
        }
 
        virtual void writeMessage(string msg) = 0;
};
 
class DebugLogger : public Logger
{
public:
        DebugLogger(int level)
        {
                this->level = level;
                this->next = NULL;
        }
 
        void writeMessage(string msg)
        {
                cout << "Message de debug : " << msg << endl;
        }
};
 
class EmailLogger : public Logger
{
public:
        EmailLogger(int level)
        {
                this->level = level;
                this->next = NULL;
        }
 
        void writeMessage(string msg)
        {
                cout << "Notification par email : " << msg << endl;
        }
};
 
class ErrorLogger : public Logger
{
public:
        ErrorLogger(int level)
        {
                this->level = level;
                this->next = NULL;
        }
 
        void writeMessage(string msg)
        {
                cerr << "Erreur : " << msg << endl;
        }
};
 
int main()
{
         // Construction de la chaine de responsabilite
        ErrorLogger logger(Logger::ERR);
        EmailLogger logger2(Logger::NOTICE);
        DebugLogger logger3(Logger::DEBUG);
        logger.setNext(&logger2);
        logger2.setNext(&logger3);  
 
        logger.message("An error has occurred.", Logger::ERR); // Le message est traité par le premier logger (ErrorLogger)
        logger.message("Step1 completed.", Logger::NOTICE);    // S'arrête au deuxième logger (EmailLogger)
        logger.message("Entering function y.", Logger::DEBUG); // Traverse toute la chaine de commande
 
        return 0;
}

Voir aussi

Liens externes



Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Chaîne de responsabilité (patron de conception) de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • Chaine de responsabilite (patron de conception) — Chaîne de responsabilité (patron de conception) En génie logiciel, le patron de conception Chaîne de responsabilité permet à un nombre quelconque de classes d essayer de répondre à une requête sans connaître les possibilités des autres classes… …   Wikipédia en Français

  • Chaîne De Responsabilité (Patron De Conception) — En génie logiciel, le patron de conception Chaîne de responsabilité permet à un nombre quelconque de classes d essayer de répondre à une requête sans connaître les possibilités des autres classes sur cette requête. Cela permet de diminuer le… …   Wikipédia en Français

  • Chaîne de responsabilité (motif de conception) — Chaîne de responsabilité (patron de conception) En génie logiciel, le patron de conception Chaîne de responsabilité permet à un nombre quelconque de classes d essayer de répondre à une requête sans connaître les possibilités des autres classes… …   Wikipédia en Français

  • Patron de conception — Pour les articles homonymes, voir Patron. le patron Proxy En informatique, et plus particulièrement en développement logiciel, un patron de conception (en anglais  …   Wikipédia en Français

  • Patron de modélisation — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Modèle de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Modèles de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Motif de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Motifs de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Patrons de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”