zhang
2 天以前 98670de02fde18c0aedaf349c0e165c59f57685b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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;
    }
}