프로그래밍/자바 디자인 패턴
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 책임 연쇄 패턴
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
반응형