责任链模式在spring中的简洁优化

责任链模式顾名思义是对一个业务需求中的具体实现进行解耦,每个链路处理自己的需求,如本次开发中的需求是一条数据将进行多种方式的处理,得到一个处理后的结果,下面是一个简化的流程图。


未命名文件 (2).png

代码步骤

  • 定义接口,如IData,具体执行方法为execute
 public interface IData {    
  JSONObject execute(JSONObject record);
}
  • 添加链路类实现接口,每个链路类中添加@Component,@Order(value = *)注解。

过滤数据

@Order(value = 1)
@Component
public class FilterDataImpl implements IData {

    @Override
    public JSONObject execute(JSONObject record) {
        //数据过滤处理
            ****
        return record;
    }
}

添加数据

@Order(value = 2)
@Component
public class AddDataImpl implements IData {
    @Override
    public JSONObject execute(JSONObject record) {
        //数据添加处理
            ****
        return record;
    }
}

等等

  • 在责任链处理类中,通过@Resource 初始化List
@Component
public class DataFactory {

    @Resource
    private List dataList;

    public String execute(JSONObject originData){
        JSONObject processResult =originData;
        for (IData data : dataList) {
            //数据为空后不继续执行
            if (processResult ==null){
                return null;
            }
            processResult= data.execute(processResult);
        }
        if (processResult !=null) {
            return processResult.toJSONString();
        }
        return null;
    }
}

spring优化点

  • 通过@Resource 初始化所有实现IData接口的类
    • 每个实现IData接口的类需要添加@Component注解
  • 对初始化所有实现IData接口的类进行排序,可按顺序执行
    • 每个实现IData接口的类中添加@Order注解其中的value值为顺序

你可能感兴趣的:(责任链模式在spring中的简洁优化)