我有一個工廠,從XML文件創建,是否可以避免長 - 如果 - 其他,如果XML是動態的,我不想硬編碼的對象? 的Java代碼 -如何避免長時間工廠中的其他人?
public static IDevice createDevice(String name, Element element) {
IDevice device;
if (name.equals("Autopilot")) {
String strSpeed = element.getAttribute("maxSpeed");
int speed = Integer.parseInt(strSpeed);
device = new AutoPilot(speed);
return device;
} else if (name.equals("Camera")) {
device = new CameraDevice();
return device;
} else if (name.equals("ClassifiedDevice")) {
device = new ClassifiedDevice();
return device;
}
return null;
}
有「設備」,在不同性質的XML文件,以及工廠創建它們取決於被選中以創建。但設備列表是動態的,可以在未來擴展。
<UAV>
<Device name="Autopilot" maxSpeed = "70" minSpeed = "40" />
<Device name="Camera" maxRange = "7000" />
<Device name="ClassifiedDevice" range = "8000" time = "4" />
</UAV>
顯示一些codez人 –
的,工廠應該做的是什麼?閱讀xml,並根據這些創建什麼樣的東西?並使用什麼語言? – GhostCat
假設這是Java,有很多可能的答案,但我的第一個停靠點首先會問你是否需要所有這些不同的類。如果答案是「是」,那麼在IDevice接口和這個工廠中是否有任何價值。如果答案仍然是「是」,則可以查看諸如JAXB/XStream(根據您指定的規則爲您執行xml反序列化)或使用枚舉或映射來存儲創建策略的內容。 – biziclop