策略模式编程

接口定义:

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); } }

相关推荐
原来是猿1 天前
线程安全的单例模式
linux·服务器·开发语言·单例模式·策略模式
Mr_linjw2 天前
策略模式简介
策略模式
故乡de云2 天前
Cursor + Claude Code 接入 API 实战:国内稳定使用 Claude 4.7 配置全攻略
大模型·ai编程·策略模式·claude·cursor·claude code
原来是猿2 天前
Linux线程同步与互斥(四):日志系统与策略模式
linux·运维·开发语言·策略模式
许国栋_3 天前
ESG驱动下的产品战略调整:企业该如何从合规走向竞争力重构?
安全·产品运营·产品经理·策略模式
周末也要写八哥4 天前
策略模式的思想的经典案例分析
策略模式
AC赳赳老秦4 天前
OpenClaw与Excel联动:批量读取/写入数据,生成可视化报表
开发语言·python·excel·产品经理·策略模式·deepseek·openclaw
lwf0061645 天前
解决macOS .dmg 文件无法安装问题
macos·策略模式
草莓熊Lotso6 天前
手搓工业级 C++ 线程安全日志系统:基于策略模式解耦,兼容 glog 使用风格
linux·运维·服务器·数据库·c++·安全·策略模式
蜜汁小强6 天前
macOS 开发者的 tmux 实战配置:分屏导航、vi 复制模式与系统剪贴板一站打通
macos·策略模式