[英]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.