工厂+策略模式 spring实现

工厂类

@Component
public class StrategyFactory {
    @Resource
    private Map<String, MyStrategy> strategyMap;

    public MyStrategy createStrategy(String strategyName) {
        MyStrategy strategy = strategyMap.get(strategyName);
        if (strategy == null) {
            return strategyMap.get(Const.DEFAULT_STRATEGY_NAME);
        }
        return strategy;
    }
}

策略类

public interface MyStrategy{
	void init();
}

具体策略实现类

@Slf4j
@Component
public class StrategyA implements MyStrategy{	
	@Override
    public void init(){
    }
}

业务类

@Slf4j
@Component
public class Business{	
	@Resource
	private StrategyFactory strategyFactory;
	
	@Override
    public void doBusiness(){
     	StreamStrategy strategy = strategyFactory.createStrategy("strategyA");
     	if (strategy != null) {
        	strategy.init();
    	}
    }
}

具体策略实现类

public class StrategyA implements MyStrategy{	
	@Override
    public void init(){
    }
}

常量类

public class Const{	
	public static final String DEFAULT_STRATEGY_NAME = "strategyA";
}

你可能感兴趣的:(工厂+策略模式 spring实现)