spring策略模式实现示例
时间: 2023-10-24 09:50:41 浏览: 135
策略模式 以及实现的一个例子
下面是一个使用Spring框架实现策略模式的示例:
首先,定义一个策略接 `Strategy`,包含一个 `execute()` 方法:
```java
public interface Strategy {
void execute();
}
```
然后,创建几个具体的策略类实现该接口:
```java
@Component
public class StrategyA implements Strategy {
@Override
public void execute() {
System.out.println("执行策略A");
}
}
@Component
public class StrategyB implements Strategy {
@Override
public void execute() {
System.out.println("执行策略B");
}
}
@Component
public class StrategyC implements Strategy {
@Override
public void execute() {
System.out.println("执行策略C");
}
}
```
接下来,创建一个策略上下文类 `StrategyContext`,并使用Spring的依赖注入功能将所有的策略类注入进来:
```java
@Component
public class StrategyContext {
private final Map<String, Strategy> strategyMap;
public StrategyContext(List<Strategy> strategies) {
this.strategyMap = strategies.stream().collect(Collectors.toMap(Strategy::getClass.getSimpleName, Function.identity()));
}
public void executeStrategy(String strategyName) {
Strategy strategy = strategyMap.get(strategyName);
if (strategy != null) {
strategy.execute();
} else {
throw new IllegalArgumentException("Unsupported strategy: " + strategyName);
}
}
}
```
最后,在其他需要使用策略模式的地方,可以通过依赖注入 `StrategyContext` 对象,并调用其 `executeStrategy()` 方法执行相应的策略:
```java
@Component
public class SomeService {
private final StrategyContext strategyContext;
public SomeService(StrategyContext strategyContext) {
this.strategyContext = strategyContext;
}
public void doSomething(String strategyName) {
strategyContext.executeStrategy(strategyName);
}
}
```
这样,通过使用Spring框架的依赖注入功能,我们可以方便地在运行时动态切换不同的策略实现。
阅读全文