策略模式编程

接口定义:

public interface ProcessParserStrategy {
List<ProcessInfo> parser(String osType, String processInfo);
String getApp();
}

public interface ConfigParserStrategy {
List<ConfigInfo> parser(String configInfo);
String getConfigType();
}

接口实现:

@Service
public class xxxProcessParser implements ProcessParserStrategy {
@Override
public List<ProcessInfo> parser(String osType, String processInfo) {
return null;
}

@Override
public String getApp() {
return "xxx";
}
}

@Service
public class xxxDispatcherConfigParser implements ConfigParserStrategy {
@Override
public List<ConfigInfo> parser(String configInfo) {
return null;
}

@Override
public String getConfigType() {
return "xxx_dispatcher";
}
}

service定义:

@Service
public class ProcessParserService {
private Map<String, ProcessParserStrategy> processParserStrategyMap;

@Autowired
public ProcessParserService(List<ProcessParserStrategy> processParserStrategyList) {
processParserStrategyMap = processParserStrategyList.stream()
.collect(Collectors.toMap(ProcessParserStrategy::getApp, Function.identity()));
}

public List<ProcessInfo> parseProcess(String app, String osType, String processInfo) {
final ProcessParserStrategy processParserStrategy = processParserStrategyMap.get(app);
final List<ProcessInfo> processInfos = processParserStrategy.parser(osType, processInfo);
return processInfos;
}
}

@Service
public class ConfigParserService {
private Map<String, ConfigParserStrategy> configParserStrategyMap;

@Autowired
public ConfigParserService(List<ConfigParserStrategy> configParserStrategieList) {
configParserStrategyMap = configParserStrategieList.stream()
.collect(Collectors.toMap(ConfigParserStrategy::getConfigType, Function.identity()));
}

public List<ConfigInfo> parseProcess(String app, String configFileType, String configInfo) {
String configType = app + "_" + configFileType;
final ConfigParserStrategy configParserStrategy = configParserStrategyMap.get(configType.toLowerCase());
final List<ConfigInfo> configInfos = configParserStrategy.parser(configInfo);
return configInfos;
}
}

client 调用:

@RestController public class PaymentController { @Autowired private xxxService xxxService; @GetMapping("/xxx") public void xxx(@RequestParam String type, @RequestParam int amount) { xxxService.xxx(type, amount); } }

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值