我有一個用例,我需要建立一個工廠類,它返回基於傳遞的枚舉的不同具體類型。但是,每種類型都需要不同的構造函數參數。那麼,在這種情況下,擁有不同簽名的多種方法是否有意義,還是完全不是工廠模式?工廠方法模式可以使用不同的過載
我想這樣
class CarFactory
{
public ModelS TeslaMaker (List<Battery> batteries){/*return ModelS*/}
public Mustang FordMaker (Engine engine) {/*return a Mustang*/}
}
,而不是說
class CarFactory
{
public Car GetCar(CarType carType) //where CarType is an enum (Ford=0,Tesla=1)
{
switch(carType)
{ case CarType.Ford: return new Mustang(); }//just an example
}
}
編輯: 對我來說,我確實需要返回一個類家族。所以,如果它是特斯拉,返回一個ModelS,一個ModelSService,ModelSWarranty等等。因此,我將採用抽象工廠的方法,這將包裝這裏給出的建議。
雖然第一個實際上並沒有枚舉部分。 – Nyerguds
@Nyerguds - 是的,這就是爲什麼我懷疑它是否甚至是工廠模式。 – arviman