策略模式

104 阅读1分钟
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

@Service
public class OperationContext {

    private final Map<String, IStrategy> strategyMap = new ConcurrentHashMap<>();

    @Autowired
    public  OperationContext(Map<String, IStrategy> strategyMap) {
        this.strategyMap.clear();
        strategyMap.forEach(this.strategyMap::put);
        System.out.println(this.strategyMap);
    }


    public IStrategy strategySelect(String mode) {
        IStrategy strategy=strategyMap.get(mode);
        if(strategy==null){
            throw new RuntimeException("未定义");
        }
        return strategy;
    }

}