3 回答

TA貢獻1798條經(jīng)驗 獲得超3個贊
您可以將 API 實現(xiàn)的類型和供應(yīng)商放在地圖中,例如:
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();
}
假設(shè)它們都實現(xiàn)了一個接口。您可以這樣調(diào)用上述方法:
Api api = getApi("Android");

TA貢獻1841條經(jīng)驗 獲得超3個贊
您可以使用工廠設(shè)計模式。
interface OperatingSystem
{
void runProcess();
}
class AndroidApi implements OperatingSystem {
public void runProcess() {
// TODO Auto-generated method stub
}
}
class IosAPi implements OperatingSystem {
public void runProcess() {
// TODO Auto-generated method stub
}
}
class WindowsApi implements OperatingSystem {
public void runProcess() {
// TODO Auto-generated method stub
}
}
class OSFactory
{
static OperatingSystem getOPApi(String type){
if (type.equalsIgnoreCase("Android")) {
return new AndroidApi();
} else if (type.equalsIgnoreCase("iOS")) {
return new IosAPi();
} else if (type.equalsIgnoreCase("Windows")) {
return new WindowsApi();
}
return null;
}
}
public class Client{
public static void main(String[] args) {
OperatingSystem os=OSFactory.getOPApi("Android");
}
}

TA貢獻1784條經(jīng)驗 獲得超9個贊
是的,您可以使用工廠設(shè)計模式或使用 Java 反射 API 來實現(xiàn)。使用 Java 反射 API,我們可以執(zhí)行如下操作,
為這里提到的所有 Api 類創(chuàng)建一個基類。將基類視為public abstract class BaseApi.
HashMap<String,String> map = new HashMap<String,String>();
map.put("Android","AndroidApi");
map.put("iOS","IosApi");
map.put("Windows","WindowsApi");
public static BaseApi getInstance(String type){
BaseApi obj = (BaseApi)Class.forName(type).newInstance();
return obj;
}
添加回答
舉報