策略模式编程

接口定义:

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

相关推荐
蜗牛互联网3 天前
Computer Use公共预览的安全设计:应用、动作与数据三维门禁
java·人工智能·后端·安全·策略模式
今年下半年4 天前
【Spring Boot】多种存储文件(FastDFS / MinIO / 阿里云 OSS)接入设计说明(附源码)
spring boot·分布式·中间件·简单工厂模式·策略模式
Zkaisen7 天前
M4(Apple Silicon)· CVE-2020-13920 抓管理员密码 完整操作指南
策略模式
加载力科技8 天前
硬盘咔咔响是坏盘信号!赶在数据丢失前克隆换盘:不重装系统、不丢文件
windows·嵌入式硬件·系统安全·策略模式·命令模式·硬盘
geovindu24 天前
java: Strategy Pattern
java·开发语言·后端·设计模式·策略模式·行为模式
geovindu25 天前
CSharp: Strategy Pattern
开发语言·后端·c#·.net·.netcore·策略模式·行为模式
沪上企服通1 个月前
代账数据的可移植性设计:开放接口、账套导出与 exit strategy 工程笔记(上海 5 家样本对照)
笔记·策略模式
码匠许师傅1 个月前
【设计模式精讲】26.策略模式(Strategy)
c++·设计模式·策略模式·uml
++==1 个月前
基于策略模式的应用层协议支持
策略模式
Java后端的Ai之路1 个月前
23、Python - 策略模式
linux·python·策略模式