面试题答案
一键面试策略模式在文件目录管理类错误处理中的应用
- 实现思路:
- 定义一个错误处理策略接口,不同的错误处理方式实现该接口。
- 在文件目录管理类中,持有一个错误处理策略对象的引用,通过构造函数或设置方法注入具体的策略。
- 代码架构设计:
- 定义错误处理策略接口:
public interface FileDirErrorHandler {
void handleError(String errorMessage);
}
- 具体错误处理策略实现:
public class LoggingErrorHandler implements FileDirErrorHandler {
@Override
public void handleError(String errorMessage) {
System.out.println("Logging error: " + errorMessage);
}
}
public class AlertingErrorHandler implements FileDirErrorHandler {
@Override
public void handleError(String errorMessage) {
System.out.println("Alerting error: " + errorMessage);
}
}
- 文件目录管理类:
public class FileDirManager {
private FileDirErrorHandler errorHandler;
public FileDirManager(FileDirErrorHandler errorHandler) {
this.errorHandler = errorHandler;
}
public void setErrorHandler(FileDirErrorHandler errorHandler) {
this.errorHandler = errorHandler;
}
public void performFileDirOperation() {
try {
// 模拟文件目录操作
if (Math.random() > 0.5) {
throw new RuntimeException("File operation failed");
}
} catch (Exception e) {
if (errorHandler != null) {
errorHandler.handleError(e.getMessage());
}
}
}
}
- 使用示例:
public class Main {
public static void main(String[] args) {
FileDirManager manager = new FileDirManager(new LoggingErrorHandler());
manager.performFileDirOperation();
manager.setErrorHandler(new AlertingErrorHandler());
manager.performFileDirOperation();
}
}
责任链模式在文件目录管理类错误处理中的应用
- 实现思路:
- 定义一个抽象的错误处理者类,包含后继处理者的引用和处理错误的抽象方法。
- 具体的错误处理者类继承抽象错误处理者类,实现处理错误的方法,并在处理不了时将错误传递给后继处理者。
- 在文件目录管理类中,构建责任链,并在发生错误时将错误传递给责任链的起始节点。
- 代码架构设计:
- 定义抽象错误处理者:
public abstract class FileDirErrorHandlerChain {
protected FileDirErrorHandlerChain successor;
public void setSuccessor(FileDirErrorHandlerChain successor) {
this.successor = successor;
}
public abstract void handleError(String errorMessage);
}
- 具体错误处理者实现:
public class LoggingErrorHandlerChain extends FileDirErrorHandlerChain {
@Override
public void handleError(String errorMessage) {
System.out.println("Logging error in chain: " + errorMessage);
if (successor != null) {
successor.handleError(errorMessage);
}
}
}
public class AlertingErrorHandlerChain extends FileDirErrorHandlerChain {
@Override
public void handleError(String errorMessage) {
System.out.println("Alerting error in chain: " + errorMessage);
if (successor != null) {
successor.handleError(errorMessage);
}
}
}
- 文件目录管理类:
public class FileDirManagerChain {
private FileDirErrorHandlerChain errorHandlerChain;
public FileDirManagerChain() {
FileDirErrorHandlerChain loggingHandler = new LoggingErrorHandlerChain();
FileDirErrorHandlerChain alertingHandler = new AlertingErrorHandlerChain();
loggingHandler.setSuccessor(alertingHandler);
this.errorHandlerChain = loggingHandler;
}
public void performFileDirOperation() {
try {
// 模拟文件目录操作
if (Math.random() > 0.5) {
throw new RuntimeException("File operation failed");
}
} catch (Exception e) {
if (errorHandlerChain != null) {
errorHandlerChain.handleError(e.getMessage());
}
}
}
}
- 使用示例:
public class MainChain {
public static void main(String[] args) {
FileDirManagerChain manager = new FileDirManagerChain();
manager.performFileDirOperation();
}
}
通过策略模式,可以在运行时灵活切换错误处理方式;而责任链模式则可以按顺序尝试多种错误处理方式,提高错误处理的灵活性、可维护性和可扩展性。