package com.zy.acs.charge; import com.zy.acs.charge.constant.ChargerType; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; @Component public class ChargeStrategyFactory { private final Map serviceMap; // 构造函数注入 List,Spring 会自动收集所有实现类 public ChargeStrategyFactory(List services) { serviceMap = services.stream() .collect(Collectors.toMap( ChargeCoreService::supportedType, Function.identity() )); } public ChargeCoreService getService(ChargerType type) { ChargeCoreService service = serviceMap.get(type); if (service == null) { throw new IllegalArgumentException("不支持的支付类型: " + type); } return service; } }