实现思路
- 定义日志记录接口:创建一个日志记录的接口,包含记录日志的方法。
- 实现具体日志记录类:实现上述接口,提供具体的日志记录功能。
- 定义装饰器抽象类:该类同样实现日志记录接口,并持有一个日志记录接口的实例,用于委托调用。
- 创建具体装饰器类:继承装饰器抽象类,根据不同日志级别,在委托调用前后添加相应的处理逻辑。
关键代码示例
- 日志记录接口
public interface Logger {
void log(String message);
}
- 具体日志记录类
public class ConsoleLogger implements Logger {
@Override
public void log(String message) {
System.out.println(message);
}
}
- 装饰器抽象类
public abstract class LoggerDecorator implements Logger {
protected Logger logger;
public LoggerDecorator(Logger logger) {
this.logger = logger;
}
@Override
public void log(String message) {
logger.log(message);
}
}
- 具体装饰器类(以DEBUG级别为例)
public class DebugLoggerDecorator extends LoggerDecorator {
public DebugLoggerDecorator(Logger logger) {
super(logger);
}
@Override
public void log(String message) {
System.out.println("[DEBUG]");
super.log(message);
}
}
- 使用示例
public class Main {
public static void main(String[] args) {
Logger logger = new ConsoleLogger();
Logger debugLogger = new DebugLoggerDecorator(logger);
debugLogger.log("This is a debug message.");
}
}