/**
* 算法预测处理
*/
@Component(CommonConst.PREFIX_PRICE_STRATEGY + "4")
public class MlFunTypeHandle implements IPriceStrategy {
@Override
public Resp handle(QueryReq queryReq) {
//具体实现
}
}
/**
* 默认处理
*/
@Component(CommonConst.PREFIX_PRICE_STRATEGY + "0")
public class DefaultHandle implements IPriceStrategy {
@Override
public Resp handle(QueryReq queryReq) {
//具体实现
}
}
/**
* 历史均价处理
*/
@Component(CommonConst.PREFIX_PRICE_STRATEGY + "3")
public class HistoryAvgTypeHandle implements IPriceStrategy {
@Pluginwired
private IBaseDataPlugin baseDataPlugin;
@Override
public Resp handle(QueryReq queryReq) {
//具体实现
}
}
3.构建一个上下文
@Service
public class PriceStrategyContext {
@Autowired
private final Map<String, IPriceStrategy> priceStrategyMap = new ConcurrentHashMap<>();
public PriceStrategyContext(Map<String, IPriceStrategy> priceStrategyMap) {
this.priceStrategyMap.clear();
priceStrategyMap.forEach(this.priceStrategyMap::put);
}
public IPriceStrategy getStrategy(String strategy){
return priceStrategyMap.get(strategy);
}
}
4.使用
public class ServiceImpl implements Service {
@Autowired
private PriceStrategyContext priceStrategyContext;
@Override
public DailyDeclareResp getByParams(QueryReq queryReq) {
IPriceStrategy priceStrategy = Optional.ofNullable(priceStrategyContext.getStrategy(CommonConst.PREFIX_PRICE_STRATEGY + queryReq.getType())).orElseThrow(() -> new BusinessException("没有找到相关的策略"));
return priceStrategy.handle(entityId,priceQueryReq);
}
}