责任链节点设计
- 定义抽象处理者类:
abstract class DataHandler {
protected DataHandler successor;
public void setSuccessor(DataHandler successor) {
this.successor = successor;
}
public abstract void handleData(Object data);
}
- 具体处理者类实现:
class ValidationHandler extends DataHandler {
@Override
public void handleData(Object data) {
// 数据验证逻辑
if (isValid(data)) {
if (successor != null) {
successor.handleData(data);
}
} else {
// 处理验证失败反馈
System.out.println("Data validation failed: " + data);
}
}
private boolean isValid(Object data) {
// 具体验证逻辑,例如数据格式等
return true;
}
}
class TransformationHandler extends DataHandler {
@Override
public void handleData(Object data) {
// 数据转换逻辑
Object transformedData = transform(data);
if (successor != null) {
successor.handleData(transformedData);
}
}
private Object transform(Object data) {
// 具体转换逻辑,例如类型转换等
return data;
}
}
class StorageHandler extends DataHandler {
@Override
public void handleData(Object data) {
// 数据存储逻辑
store(data);
}
private void store(Object data) {
// 具体存储逻辑,例如写入数据库等
System.out.println("Data stored: " + data);
}
}
将集合数据传递到责任链
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Object> dataList = new ArrayList<>();
// 初始化数据
dataList.add("data1");
dataList.add("data2");
DataHandler validationHandler = new ValidationHandler();
DataHandler transformationHandler = new TransformationHandler();
DataHandler storageHandler = new StorageHandler();
validationHandler.setSuccessor(transformationHandler);
transformationHandler.setSuccessor(storageHandler);
for (Object data : dataList) {
validationHandler.handleData(data);
}
}
}
处理不同处理结果的反馈
- 验证失败反馈:在
ValidationHandler
中,如果数据验证失败,直接打印错误信息,如System.out.println("Data validation failed: " + data);
。也可以根据业务需求抛出特定异常,由上层调用者统一处理。
- 转换和存储结果反馈:在
TransformationHandler
和StorageHandler
中,处理成功时可以记录日志,如System.out.println("Data transformed and ready for next step: " + transformedData);
和System.out.println("Data stored: " + data);
。若转换或存储失败,可以根据情况抛出异常或返回错误码,由上层调用者根据具体业务决定如何处理。