我有一個設計問題要問。到目前爲止我還沒有編寫任何代碼,只是想着如何在這一點上實現。我有一個類型爲A的對象,它包含一個類型爲B的對象。我希望B定義一個對象類別(接口或抽象類?)。然後我有一個xml文件,它定義了B應該是的子類型。例如,如果B是名爲Driveable的接口,則可以在xml中將「car」或「truck」定義爲類型A所需的Drivable對象。關於java中工廠方法的設計實現
我在做的是讓B成爲接口並且然後創建一個具有工廠方法的靜態工廠類,以確定應爲哪個子類型B提供一個xml文件。所以我的第一個問題是,這是解決問題的最好方法嗎?使用抽象類而不是接口會更好嗎?還是主要只是個人偏好?
其次,如果我做一個接口去的話,我的工廠方法中會我只是做:
B createB(File f){
...
String type = ...
if(type.equals("car"))
return new CarType();
else if(type.equals("truck"))
return new TruckType();
...
return null;
}
所以我每次添加一個新的B子型的時候,我需要,如果再添聲明到這個方法。有沒有更好的方法來做到這一點,所以我不得不做的是創建一個新的B子類型,然後更新我的XML並不更新工廠方法?我基本上不想將B的類型硬編碼到我的工廠方法中。如果我上面的內容是使用工廠方法的非常標準的協議,那麼我可以用這種方式來處理這個問題,但看起來不太合適。
對於這種情況,您需要AbstractFactory模式。在Google上搜索它。你會得到一個鏈接到維基百科,它解釋了它是什麼。 –
雖然我只有一個抽象產品(類型B)。然後,我需要爲B的每個新子類型創建一個新的混凝土工廠。在某些時候,我需要決定使用哪個混凝土工廠。似乎它會呈現相同的「問題」。 – user972276