java - 如何在 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 个端点。
解决方案
您可以将 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");
推荐阅读
- python - python asyncio如何读取StdIn并写入StdOut?
- coq - 非归纳类型的平等
- html - Html : 查看其父 id 之外的 id
- python - PubsubMessage publish_time 被保存为 DatetimeWithNanoseconds
- wso2 - 寻找用于监控流量管理器队列的 WSO2 JMS 参数
- reactjs - 在反应中使用地图方法增加按钮
- android - 如何保护 android 应用程序(它与后端服务器有一些通信)
- javascript - react渲染后如何获取窗口中div的宽度?
- c# - 将登录页面与数据库连接失败
- wpf - 如何将 WPF 按钮添加到每个 WPF DataGrid 列