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<ChargerType, ChargeCoreService> serviceMap;
|
|
// 构造函数注入 List<PaymentService>,Spring 会自动收集所有实现类
|
public ChargeStrategyFactory(List<ChargeCoreService> 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;
|
}
|
}
|