logo

Sorumluluk Zinciri Modeli

  1. Sorumluluk Zinciri Modeli
  2. Sorumluluk Zinciri DP'nin Avantajı
  3. Sorumluluk Zinciri DP'sinin Kullanımı
  4. Sorumluluk Zinciri UML'si DP
  5. Sorumluluk Zinciri DP Örneği

Sorumluluk zincirinde gönderen, bir nesne zincirine istek gönderir. İstek, zincirdeki herhangi bir nesne tarafından işlenebilir.

Sorumluluk Zinciri Modeli şunu söylüyor: 'Birden fazla nesneye isteği işleme alma şansı vererek, isteğin göndericisini alıcısına bağlamaktan kaçının'. Örneğin bir ATM, para verme sürecinde Sorumluluk Zinciri tasarım modelini kullanır.

Yani normalde her alıcının başka bir alıcının referansını içerdiğini söyleyebiliriz. Bir nesne isteği yerine getiremezse, aynı şeyi bir sonraki alıcıya iletir ve bu şekilde devam eder.


Sorumluluk Zinciri Modelinin Avantajı

  • Bağlantıyı azaltır.
  • Sorumlulukları nesnelere dağıtırken esneklik katar.
  • Bir grup sınıfın tek bir sınıf gibi davranmasına olanak tanır; Bir sınıfta üretilen olaylar, kompozisyon yardımıyla diğer işleyici sınıflara gönderilebilir.

Sorumluluk Zinciri Modeli Kullanımı:

Şunlar kullanılır:

dar açı
  • Birden fazla nesne bir isteği işleyebiliyorsa ve işleyici bilinmiyorsa.
  • İsteği işleyebilecek nesne grubunun dinamik bir şekilde belirtilmesi gerekir.

Sorumluluk Zinciri Modeli Örneği

Sorumluluk Zinciri Modeli örneğini yukarıdaki UML diyagramından anlayalım.

Sorumluluk Zinciri Modeli için UML:

Yukarıdaki UML'nin uygulanması:

Aşama 1

Oluşturmak Ağaç kesicisi soyut sınıf.

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

Aşama 3

Oluşturmak Hata Ayıklama Tabanlı Kaydedici sınıf.

linux hangisi
Dosya: 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. Adım

Oluşturmak Hata Tabanlı Kaydedici sınıf.

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

Adım 5

Oluşturmak ChainOfResponsibilityClient sınıf.

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

bu örneği indir

Çıktı

 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