Chaîne de responsabilité (motif de conception)
- 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 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.
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);
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
DebugLogger logger(Logger::DEBUG);
EmailLogger logger2(Logger::NOTICE);
ErrorLogger logger3(Logger::ERR);
logger.setNext(&logger2);
logger2.setNext(&logger3);
logger.message("Entering function y.", Logger::DEBUG); // Utilisé par DebugLogger
logger.message("Step1 completed.", Logger::NOTICE); // Utilisé par DebugLogger et EmailLogger
logger.message("An error has occurred.", Logger::ERR); // Utilisé par les trois Loggers
return 0;
}
Voir aussi
Liens externes
- Portail de l’informatique
Catégorie : Patron de conception
Wikimedia Foundation.
2010.
Contenu soumis à la licence CC-BY-SA. Source : Article Chaîne de responsabilité (motif de conception) de Wikipédia en français (auteurs)
Regardez d'autres dictionnaires:
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
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
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
Schéma 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
MUSIQUE — La musique!... Qu’est ce que cela veut dire?... Il est permis de supposer que Bach aurait su tranquillement trouver la réponse à une telle question, et sans doute aussi Couperin, Lassus, Grégoire le Grand et Aristoxène. Plus près de nous, Rameau… … Encyclopédie Universelle
Cocoa (Apple) — Pour les articles homonymes, voir Cocoa. Traduction à relire … Wikipédia en Français
Cocoa (Mac OS X) — Cocoa (Apple) Pour les articles homonymes, voir Cocoa. Traduction à relire … Wikipédia en Français
Design Pattern — 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