springboot 策略模式+map
时间: 2023-08-18 16:07:23 浏览: 119
Spring下使用策略模式
在 Spring Boot 中使用策略模式结合 Map 的方式,你可以按照以下步骤进行实现:
1. 首先,定义一个接口,表示策略模式的抽象策略,例如:
```java
public interface Strategy {
String execute();
}
```
2. 创建具体的策略类实现接口,例如:
```java
@Component
public class StrategyA implements Strategy {
@Override
public String execute() {
return "执行策略A";
}
}
@Component
public class StrategyB implements Strategy {
@Override
public String execute() {
return "执行策略B";
}
}
```
3. 在使用策略的地方,注入策略类的集合,并通过 Map 存储,将策略类的名称作为键,策略类对象作为值,例如:
```java
@Service
public class StrategyService {
private final Map<String, Strategy> strategyMap;
public StrategyService(List<Strategy> strategyList) {
this.strategyMap = new HashMap<>();
for (Strategy strategy : strategyList) {
strategyMap.put(strategy.getClass().getSimpleName(), strategy);
}
}
public String executeStrategy(String strategyName) {
Strategy strategy = strategyMap.get(strategyName);
if (strategy != null) {
return strategy.execute();
}
return "未找到对应的策略";
}
}
```
4. 在使用策略的地方调用 `executeStrategy()` 方法,并传入对应的策略名称,例如:
```java
@RestController
public class StrategyController {
private final StrategyService strategyService;
public StrategyController(StrategyService strategyService) {
this.strategyService = strategyService;
}
@GetMapping("/execute/{strategyName}")
public String executeStrategy(@PathVariable String strategyName) {
return strategyService.executeStrategy(strategyName);
}
}
```
这样,当访问 `/execute/StrategyA` 接口时,会执行策略A;访问 `/execute/StrategyB` 接口时,会执行策略B。你可以根据实际需求进行调整和扩展。希望对你有帮助!
阅读全文