logo

Atbildības ķēdes modelis

  1. Atbildības ķēdes modelis
  2. Atbildības ķēdes DP priekšrocības
  3. Atbildības ķēdes DP izmantošana
  4. Atbildības ķēdes DP UML
  5. Atbildības ķēdes DP piemērs

Atbildības ķēdē sūtītājs nosūta pieprasījumu objektu ķēdei. Pieprasījumu var apstrādāt jebkurš ķēdes objekts.

Atbildības ķēdes modelis saka, ka tikai “izvairieties no pieprasījuma sūtītāja savienošanas ar tā saņēmēju, dodot vairākiem objektiem iespēju apstrādāt pieprasījumu”. Piemēram, bankomāts naudas došanas procesā izmanto atbildības ķēdes dizaina modeli.

Citiem vārdiem sakot, mēs varam teikt, ka parasti katrs uztvērējs satur atsauci uz citu uztvērēju. Ja viens objekts nevar apstrādāt pieprasījumu, tas to pašu nodod nākamajam saņēmējam un tā tālāk.


Atbildības ķēdes modeļa priekšrocības

  • Tas samazina savienojumu.
  • Tas palielina elastību, vienlaikus piešķirot objektiem pienākumus.
  • Tas ļauj klašu kopumam darboties kā vienam; vienā klasē radītos notikumus ar kompozīcijas palīdzību var nosūtīt citām hendleru klasēm.

Atbildības ķēdes modeļa izmantošana:

To lieto:

dfa automātu piemēri
  • Ja pieprasījumu var apstrādāt vairāk nekā viens objekts un apstrādātājs nav zināms.
  • Kad objektu grupa, kas var apstrādāt pieprasījumu, ir jānorāda dinamiskā veidā.

Atbildības ķēdes modeļa piemērs

Sapratīsim atbildības ķēdes modeļa piemēru, izmantojot iepriekš minēto UML diagrammu.

java do while cilpa

UML atbildības ķēdes modelim:

Iepriekš minētā UML ieviešana:

1. darbība

Izveidot a Mežizstrādnieks abstraktā klase.

 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){>

3. darbība

Izveidot a DebugBasedLogger klasē.

Fails: 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. 

4. darbība

Izveidot a ErrorBasedLogger klasē.

Fails: 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. 

5. darbība

Izveidot a ChainOfResponsibilityClient klasē.

Fails: 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;); } } 

lejupielādējiet šo piemēru

Izvade

 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