Spring Boot 中使用策略模式注入 Bean
在 Spring Boot 中使用策略模式并注入 bean,可以按照以下步骤进行:
- 创建策略接口和多个实现类
public interface Strategy {
void doSomething();
}
@Component
public class StrategyImplA implements Strategy {
@Override
public void doSomething() {
System.out.println('Strategy A');
}
}
@Component
public class StrategyImplB implements Strategy {
@Override
public void doSomething() {
System.out.println('Strategy B');
}
}
- 创建策略工厂类
@Component
public class StrategyFactory {
@Autowired
private List<Strategy> strategies;
public Strategy getStrategy(String type) {
for (Strategy strategy : strategies) {
if (strategy.getClass().getSimpleName().equalsIgnoreCase('strategyimpl' + type)) {
return strategy;
}
}
throw new IllegalArgumentException('Invalid strategy type: ' + type);
}
}
- 在需要使用策略的地方注入策略工厂类,并根据传入的参数获取对应的策略实现类
@Service
public class StrategyService {
@Autowired
private StrategyFactory strategyFactory;
public void doSomething(String type) {
Strategy strategy = strategyFactory.getStrategy(type);
strategy.doSomething();
}
}
这样,在使用StrategyService的时候,只需要传入对应的策略类型,即可使用相应的策略。例如:
@Autowired
private StrategyService strategyService;
public void test() {
strategyService.doSomething('A'); // 输出:Strategy A
strategyService.doSomething('B'); // 输出:Strategy B
}
原文地址: https://www.cveoy.top/t/topic/og7T 著作权归作者所有。请勿转载和采集!