首页 > 解决方案 > 如何在 Single 方法中为不同的端点创建对象,而不是 java 中的 if 循环

问题描述

if (type.equalsIgnoreCase("Android")) {
    return new AndroidApi;
} else if (type.equalsIgnoreCase("iOS")) {
    return new  IosAPi;
} else if (type.equalsIgnoreCase("Windows")) {
    return new WindowsApi;
}

我如何创建对象而不是 if 条件那里有 20 个端点。

标签: java

解决方案


您可以将 API 实现的类型和供应商放在地图中,例如:

public static final Map<String, Supplier<Api>> supplierMap = Map.of(
        "android",  AndroidApi::new,
        "ios",      IosApi::new,
        "windows",  WindowsApi::new
);

public static Api getApi(String type) {
    return supplierMap.get(type.toLowerCase()).get();
}

假设它们都实现了一个接口。您可以这样调用上述方法:

Api api = getApi("Android");

推荐阅读