Chain Of Responsibility design patter (Logger LLD System Design)
- Manbodh ratre
- Jun 6, 2024
- 1 min read
Updated: Jun 12, 2024
LoggerProcessor
package designPatterns.ChainOfResposibilityPattern;
public class LogProcessor {
private final LogProcessor nextLogProcessor;
public LogProcessor(LogProcessor nextLogProcessor) {
this.nextLogProcessor = nextLogProcessor;
}
public void log(String name, String message) {
if (nextLogProcessor != null) {
nextLogProcessor.log(name, message);
}
}
}
Info Log class
package designPatterns.ChainOfResposibilityPattern;
public class InfoLog extends LogProcessor {
public InfoLog(LogProcessor nextLogProcessor) {
super(nextLogProcessor);
}
public void log(String name, String message) {
if (name.equalsIgnoreCase("INFO")) {
System.out.println("Info: " + message);
} else {
super.log(name, message);
}
}
}
Error log class
package designPatterns.ChainOfResposibilityPattern;
public class ErrorLog extends LogProcessor {
public ErrorLog(LogProcessor nextLogProcessor) {
super(nextLogProcessor);
}
public void log(String name, String message) {
if (name.equalsIgnoreCase("ERROR")) {
System.out.println("Error: " + message);
}else{
super.log(name, message);
}
}
}
Debug Log Class
package designPatterns.ChainOfResposibilityPattern;
public class DebugLog extends LogProcessor {
public DebugLog(LogProcessor nextLogProcessor) {
super(nextLogProcessor);
}
public void log(String name, String message) {
if (name.equalsIgnoreCase("DEBUG")) {
System.out.println("DEBUG: " + message);
} else {
super.log(name, message);
}
}
}
package designPatterns.ChainOfResposibilityPattern;
public class ChainOfResponsibilityMain {
public static void main(String[] args) {
LogProcessor logger = new InfoLog(new DebugLog(new ErrorLog(null)));
logger.log("INFO", "this is info message");
logger.log("ERROR", "this is error message");
logger.log("DEBUG", "this is debug message");
}
}output:
Info: this is info message
Error: this is error message
DEBUG: this is debug message






Comments