我正在尋找的改進方案,以下列問題的instanceof避免。我有一個東西傳給工廠,工廠將檢查對象類型,創建另一個類型,用來自傳入對象的數據填充它,並返回新類型。在工廠方法
...
public MyAbstractClass create(MyObject a) {
if (a instanceof A) {
A obj = (A) a;
return new MyAbstractClass_1 (obj.getField(), factoryField);
}
else if (a instanceof B) {
B obj = (B) a;
return new MyAbstractClass_2 (obj.getSomething(), obj.getSomethingElse(), factoryField);
}
}
返回類型的實例被統稱爲後綴。展望未來,我需要支持更多類型的,如果可能,我想避免的instanceof
解決方案。我該如何改進?
什麼的'create'方法採取任何參數的原因是什麼?該實現具有創建該對象所需的內容 - 「factoryField」除外。 – user1491636
@ user1491636你說得對,這些信息應該從實例來現在 –
你更新的解決方案是一個我在想......不知道這是否真的是一個工廠了,雖然:) – user1491636