如何在 spring 中实现对同一个数据对象,实现流式处理? 即,定义某一接口,同时定义多个处理类来实现这个接口,在处理数据时,依次(并行)调用这些处理类,在处理类内部,根据业务需求,判断是否需要进行处理,不处理的直接 return 。
现在的方式是使用策略模式,通过 Autowired 自动注入这些处理类,放入 map ,根据业务类型取出不同的处理类进行处理。
不知这是否是在 spring boot 中的最佳实现方式? 如果同时需要多个处理类进行处理(如上所述),是否只能在自动注入时放入一个 List 中,进行遍历处理?
public interface Strategy {
Integer getBizCode();
public int doOperation(int num1, int num2);
}
@Component
public class OperationAdd implements Strategy{
@Override
public Integer getBizCode() {
return 1;
}
@Override
public int doOperation(int num1, int num2) {
return num1 + num2;
}
}
@Component
public class OperationSubtract implements Strategy{
@Override
public Integer getBizCode() {
return 2;
}
@Override
public int doOperation(int num1, int num2) {
return num1 - num2;
}
}
public class StrategyPatternDemo {
HashMap<Integer, Strategy> strategyMap = new HashMap<>();
@Autowired
public StrategyPatternDemo(List<Strategy> strategies){
for (Strategy strategy : strategies) {
strategyMap.put(strategy.getCode(),strategy);
}
}
public void test(int type, int num1, int num2) {
Strategy strategy = strategyMap.get(type);
int result = strategy.doOperation(num1, num2);
System.out.println(result);
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.