프로그래밍/자바 디자인 패턴

자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 책임 연쇄 패턴

Ericlee 2021. 4. 18. 02:34
반응형

책임 연쇄 패턴은 요청에 대한 수신자 오브젝트 목록을 작성합니다.

이 패턴은 행동 패턴입니다.

책임 연쇄 패턴을 사용할 때, 일반적으로 각 수신기는 다른 수신기에 대한 참조를 포함합니다.

한 객체가 요청을 처리 할 수 ​​없으면 다음 객체로 전달합니다.

예제


abstract class Logger {
   protected Logger nextLogger;
   public void setNextLogger(Logger nextLogger){
      this.nextLogger = nextLogger;
   }

   public void logMessage(String message){
      log(message);
      if(nextLogger !=null){
         nextLogger.logMessage(message);
      }
   }
   abstract protected void log(String message);  
}
class ConsoleLogger extends Logger {
   public ConsoleLogger(){
   }
   @Override
   protected void log(String message) {    
      System.out.println("Console::Logger: " + message);
   }
}
class EMailLogger extends Logger {
   public EMailLogger(){
   }
   @Override
   protected void log(String message) {    
      System.out.println("EMail::Logger: " + message);
   }
}
class FileLogger extends Logger {
   public FileLogger(){
   }
   @Override
   protected void log(String message) {    
      System.out.println("File::Logger: " + message);
   }
}
public class Main {  
   private static Logger getChainOfLoggers(){
      Logger emailLogger = new EMailLogger();
      Logger fileLogger = new FileLogger();
      Logger consoleLogger = new ConsoleLogger();
      emailLogger.setNextLogger(fileLogger);
      fileLogger.setNextLogger(consoleLogger);
      return emailLogger;  
   }
   public static void main(String[] args) {
      Logger loggerChain = getChainOfLoggers();
      loggerChain.logMessage("Null pointer");
      loggerChain.logMessage("Array Index Out of Bound");
      loggerChain.logMessage("Illegal Parameters");
   }
}

위의 코드는 다음 결과를 출력합니다

 

 


EMail::Logger: Null pointer
File::Logger: Null pointer
Console::Logger: Null pointer
EMail::Logger: Array Index Out of Bound
File::Logger: Array Index Out of Bound
Console::Logger: Array Index Out of Bound
EMail::Logger: Illegal Parameters
File:Logger: Illegal Parameters
Console::Logger: Illegal Parameters
반응형