//type为上文的参数
switch (type){
case 2:
//逻辑处理 很长 看着难受
break;
case 3:
//逻辑处理
break;
case 4:
//逻辑处理
break;
case 5:
//逻辑处理
break;
default:
break;
}
使用策略模式:定义接口 实现类 以及获取具体策略的类
public interface Strategy {
Type getType();
T doHandle(args...);
}
@Component
public class AStrategy implements Strategy {
@Override
public Type getType() {
return TypeA;
}
@Override
public T doHandle(args...) {
//具体逻辑
return A;
}
}
@Component
public class BStrategy implements Strategy {
@Override
public Type getType() {
return TypeB;
}
@Override
public T doHandle(args...) {
//具体逻辑
return B;
}
}
//第一种 有新增的策略启动会自动加载进去
@Component
public class StrategyHandler implements ApplicationContextAware{
private static Map map=new HashMap<>();
private static Map strategyMap=new HashMap<>();
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
//根据接口类型返回相应的所有bean
map = applicationContext.getBeansOfType(Strategy.class);
}
public static Map getMap() {
if(map == null || map.isEmpty()){
return null;
}
for(String key: map.keySet()){
Object obj = map.get(key);
if(!(obj instanceof Strategy)){
continue;
}
Strategy handler=(Strategy)obj;
strategyMap.put(handler.getType().getCode(),handler);
}
return strategyMap;
}
}