簡體   English   中英

有沒有更好的方法來實現具有兩個條件的簡單Factory?

[英]Is there a better way to implement a simple Factory with two conditions?

我具有以下類結構:

MyClass
  FirstClass
    FirstClassVersion1
    FirstClassVersion2
  SecondClass
    SecondClassVersion1
    SecondClassVersion2

在某個時候,我需要根據類編號和類版本對MyClass進行引用,因此我創建了一個簡單的工廠。 但是我的工廠有點復雜,如下所示:

public class MyClassFactory {

    public static MyClass createMyClass(int classNumber, int classVersion) throws Exception {
        if (classNumber == 1) {
            if (classVersion == 1) {
                return new FirstClassVersion1();
            } else if (classVersion == 2) {
                return new FirstClassVersion2();
            }
        } else if (classNumber == 2) {
            if (classVersion == 1) {
                return new SecondClassVersion1();
            } else if (classVersion == 2) {
                return new SecondClassVersion2();
            }
        }

        throw new Exception("...");
    }
}

有一個更好的方法嗎?

這是另一個想法:

public class MyClassFactory {

    private MyClassFactory instance = new MyClassFactory();

    private MyClassFactory() {}

    public MyClassFactory getInstance() { return instance; }

    public MyClass create(Class clazz) throws Exception {
       return clazz.newInstance();
    }
}

根據需要修飾它(例如,使用泛型進行更強大的類型檢查)。

您的方式要求您每次擴展類時都要修改工廠。 那無法擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM