logo

Modèle de chaîne de responsabilité

  1. Modèle de chaîne de responsabilité
  2. Avantage de la chaîne de responsabilité DP
  3. Utilisation de la chaîne de responsabilité DP
  4. UML de Chaîne de Responsabilité DP
  5. Exemple de chaîne de responsabilité DP

Dans la chaîne de responsabilité, l'expéditeur envoie une requête à une chaîne d'objets. La demande peut être traitée par n'importe quel objet de la chaîne.

Un modèle de chaîne de responsabilité indique que 'évitez de coupler l'expéditeur d'une requête à son destinataire en donnant à plusieurs objets une chance de gérer la requête'. Par exemple, un guichet automatique utilise le modèle de conception de chaîne de responsabilité dans le processus de don d’argent.

En d’autres termes, on peut dire que normalement chaque récepteur contient la référence d’un autre récepteur. Si un objet ne peut pas gérer la demande, il la transmet au récepteur suivant et ainsi de suite.


Avantage du modèle de chaîne de responsabilité

  • Cela réduit le couplage.
  • Cela ajoute de la flexibilité tout en attribuant les responsabilités aux objets.
  • Il permet à un ensemble de classes d’agir comme une seule ; les événements produits dans une classe peuvent être envoyés à d’autres classes de gestionnaires à l’aide de la composition.

Utilisation du modèle de chaîne de responsabilité :

C'est utilisé:

convertir une chaîne en char java
  • Lorsque plusieurs objets peuvent gérer une requête et que le gestionnaire est inconnu.
  • Lorsque le groupe d'objets pouvant gérer la requête doit être spécifié de manière dynamique.

Exemple de modèle de chaîne de responsabilité

Comprenons l'exemple du modèle de chaîne de responsabilité par le diagramme UML ci-dessus.

UML pour le modèle de chaîne de responsabilité :

Implémentation de l'UML ci-dessus :

Étape 1

Créer un Enregistreur classe abstraite.

burak ozcivit
 public abstract class Logger { public static int OUTPUTINFO=1; public static int ERRORINFO=2; public static int DEBUGINFO=3; protected int levels; protected Logger nextLevelLogger; public void setNextLevelLogger(Logger nextLevelLogger) { this.nextLevelLogger = nextLevelLogger; } public void logMessage(int levels, String msg){ if(this.levels<=levels){ displayloginfo(msg); } if (nextlevellogger!="null)" { nextlevellogger.logmessage(levels, msg); protected abstract void displayloginfo(string < pre> <h4>Step 2</h4> <p> Create a <b>ConsoleBasedLogger</b> class.</p> File: ConsoleBasedLogger.java <pre> public class ConsoleBasedLogger extends Logger { public ConsoleBasedLogger(int levels) { this.levels=levels; } @Override protected void displayLogInfo(String msg) { System.out.println(&apos;CONSOLE LOGGER INFO: &apos;+msg); } } </pre> <h4>Step 3</h4> <p>Create a <b>DebugBasedLogger</b> class.</p> File: DebugBasedLogger.java <pre> public class DebugBasedLogger extends Logger { public DebugBasedLogger(int levels) { this.levels=levels; } @Override protected void displayLogInfo(String msg) { System.out.println(&apos;DEBUG LOGGER INFO: &apos;+msg); } }// End of the DebugBasedLogger class. </pre> <h4>Step 4</h4> <p>Create a <b>ErrorBasedLogger</b> class.</p> File: ErrorBasedLogger.java <pre> public class ErrorBasedLogger extends Logger { public ErrorBasedLogger(int levels) { this.levels=levels; } @Override protected void displayLogInfo(String msg) { System.out.println(&apos;ERROR LOGGER INFO: &apos;+msg); } }// End of the ErrorBasedLogger class. </pre> <h4>Step 5</h4> <p>Create a <b>ChainOfResponsibilityClient</b> class.</p> File: ChainofResponsibilityClient.java <pre> public class ChainofResponsibilityClient { private static Logger doChaining(){ Logger consoleLogger = new ConsoleBasedLogger(Logger.OUTPUTINFO); Logger errorLogger = new ErrorBasedLogger(Logger.ERRORINFO); consoleLogger.setNextLevelLogger(errorLogger); Logger debugLogger = new DebugBasedLogger(Logger.DEBUGINFO); errorLogger.setNextLevelLogger(debugLogger); return consoleLogger; } public static void main(String args[]){ Logger chainLogger= doChaining(); chainLogger.logMessage(Logger.OUTPUTINFO, &apos;Enter the sequence of values &apos;); chainLogger.logMessage(Logger.ERRORINFO, &apos;An error is occured now&apos;); chainLogger.logMessage(Logger.DEBUGINFO, &apos;This was the error now debugging is compeled&apos;); } } </pre> <hr> download this example <h4>Output</h4> <pre> bilityClient CONSOLE LOGGER INFO: Enter the sequence of values CONSOLE LOGGER INFO: An error is occured now ERROR LOGGER INFO: An error is occured now CONSOLE LOGGER INFO: This was the error now debugging is compeled ERROR LOGGER INFO: This was the error now debugging is compeled DEBUG LOGGER INFO: This was the error now debugging is compeled </pre></=levels){>

Étape 3

Créer un DebugBasedLogger classe.

Fichier : DebugBasedLogger.java
 public class DebugBasedLogger extends Logger { public DebugBasedLogger(int levels) { this.levels=levels; } @Override protected void displayLogInfo(String msg) { System.out.println(&apos;DEBUG LOGGER INFO: &apos;+msg); } }// End of the DebugBasedLogger class. 

Étape 4

Créer un Enregistreur basé sur les erreurs classe.

Fichier : ErrorBasedLogger.java
 public class ErrorBasedLogger extends Logger { public ErrorBasedLogger(int levels) { this.levels=levels; } @Override protected void displayLogInfo(String msg) { System.out.println(&apos;ERROR LOGGER INFO: &apos;+msg); } }// End of the ErrorBasedLogger class. 

Étape 5

Créer un ChainOfResponsibilityClient classe.

Fichier : ChainofResponsibilityClient.java
 public class ChainofResponsibilityClient { private static Logger doChaining(){ Logger consoleLogger = new ConsoleBasedLogger(Logger.OUTPUTINFO); Logger errorLogger = new ErrorBasedLogger(Logger.ERRORINFO); consoleLogger.setNextLevelLogger(errorLogger); Logger debugLogger = new DebugBasedLogger(Logger.DEBUGINFO); errorLogger.setNextLevelLogger(debugLogger); return consoleLogger; } public static void main(String args[]){ Logger chainLogger= doChaining(); chainLogger.logMessage(Logger.OUTPUTINFO, &apos;Enter the sequence of values &apos;); chainLogger.logMessage(Logger.ERRORINFO, &apos;An error is occured now&apos;); chainLogger.logMessage(Logger.DEBUGINFO, &apos;This was the error now debugging is compeled&apos;); } } 

téléchargez cet exemple

Sortir

 bilityClient CONSOLE LOGGER INFO: Enter the sequence of values CONSOLE LOGGER INFO: An error is occured now ERROR LOGGER INFO: An error is occured now CONSOLE LOGGER INFO: This was the error now debugging is compeled ERROR LOGGER INFO: This was the error now debugging is compeled DEBUG LOGGER INFO: This was the error now debugging is compeled