Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在单个方法中为不同端点创建对象,而不是在java中创建if循环_Java - Fatal编程技术网

如何在单个方法中为不同端点创建对象,而不是在java中创建if循环

如何在单个方法中为不同端点创建对象,而不是在java中创建if循环,java,Java,如何创建对象而不是if条件 有20个端点。您可以使用factory设计模式 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个端点。

您可以使用factory设计模式

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

您可以使用工厂设计模式

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

您可以将API实现的类型和供应商放入映射中,如:

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");
    }
}

您可以将API实现的类型和供应商放入映射中,如:

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");
    }
}

是的,您可以使用factory设计模式或Java反射API来实现。 使用Java反射API,我们可以执行如下操作:

为此处提到的所有Api类创建基类。考虑BaseCLASS作为<代码>公共抽象类BaseAPI <代码>。p>
Api api = getApi("Android");
HashMap map=newhashmap();
map.put(“安卓”、“安卓达皮”);
map.put(“iOS”、“IosApi”);
map.put(“Windows”、“WindowsApi”);
公共静态BaseApi getInstance(字符串类型){
BaseApi obj=(BaseApi)类.forName(类型).newInstance();
返回obj;
}

是的,您可以使用factory设计模式或Java反射API来实现。 使用Java反射API,我们可以执行如下操作:

为此处提到的所有Api类创建基类。考虑BaseCLASS作为<代码>公共抽象类BaseAPI <代码>。p>
Api api = getApi("Android");
HashMap map=newhashmap();
map.put(“安卓”、“安卓达皮”);
map.put(“iOS”、“IosApi”);
map.put(“Windows”、“WindowsApi”);
公共静态BaseApi getInstance(字符串类型){
BaseApi obj=(BaseApi)类.forName(类型).newInstance();
返回obj;
}

添加更多细节。查看工厂方法模式。添加更多细节。查看工厂方法模式。回答不错,或者这样
AndroidApi=(AndroidApi)getApi(“Android”)?回答很好,或者用这种方式
AndroidApi=(AndroidApi)getApi(“Android”)