我正在尋找的設計模式,以幫助相關的類實例化尋找用於填充類的一種設計模式,沒有數據庫
一個特殊的問題可以說我有一個名爲CarModel類,它具有類似性質:
CarModel
{
string MakeName
string ModelName
int NumberOfDoors
int NumberOfLiters
string StereoMake
bool HasAC
List<Color> ColorOptions
...etc
}
並且可以說我的應用程序會從不同車型的代碼中爲多個位置實例化此類(如2015豐田凱美瑞LE,2015豐田卡羅拉SE,2013福特野馬GT等)。
這些不是單身人士,但每次實例化2015年豐田凱美瑞LE時,基本屬性將始終相同(因爲那些是2015款豐田凱美瑞LE的屬性)。所有的汽車模型都會得到滿足(所以這不適用於建造者)。
最後,假設這些屬性不能從數據庫或配置文件中獲得(假設平臺不支持它)。
我不想要發生的是,我不希望每個carModel被實例化的代碼的地方,都必須將這些屬性作爲參數傳遞給構造函數。來電者不必知道他們,另外它可能導致錯誤和維護問題。
我想要發生的是,我希望調用者只指定它想要的汽車模型,並且該類應該被填充。通常情況下,我會用數據庫後端做這種用例,但是,這不是一個選項。
我現在在想的是,我將傳入一個枚舉值給構造函數,並且該類將根據它自行初始化。所以:
public CarModel(CarModelTypes cmt)
{
if(cmt == CarModelTypes.2015_Toyota_Camry_LE)
{
MakeName = "Toyota";
ModelName = "Camry";
NumberOfDoors = 4;
etc...
}
else if(cmt == CarModelTypes.2013_Ford_Mustang_GT)
{
MakeName = "Ford";
ModelName = "Mustang";
NumberOfDoors = 2;
etc
}
else if(etc...
}
我把它放到一個單獨的函數,但你明白了。不知道我喜歡那樣。感覺醜陋。後來我想我可以爲從CarModel繼承每個汽車模型類型創建一個類,他們可以實例化自己,所以:
public class Car2015ToyotaCamryLE : CarModel
{
string MakeName = "Toyota";
string ModelName = "Camry";
int NumberOfDoors = 4
etc
public Car2015ToyotaCamryLE()
{
}
}
但是好像我真正這裏做的是創建類的實例作爲類本身,根本感覺不對。增加的班級數量可能會增加。即使我們保留了20個模型,這個項目中仍然有20個額外的類。
所以,這就是爲什麼我在這裏。任何人都有一個清晰的方法來處理這個問題,或者任何人都知道專門爲此設計的模式?否則,我可能會選擇第一個選項。
感謝
大廈汽車似乎是一個[汽車廠]完美的工作(http://en.wikipedia.org/wiki/Factory_method_pattern) – theMayer
您需要將數據存儲在數據存儲結構。就這麼簡單。創建類來存儲數據是一個可怕的想法,因爲它使得項目完全無法管理。 2016款車型發佈時會發生什麼?如果你絕對不能將數據存儲在數據庫中,那麼把它存儲在一個漂亮的精簡json結構中怎麼樣? –
你打算如何處理汽車?您是否有機會擁有相同車型的多個實例?你會根據模型做不同的事情嗎?你確定你無法將數據保存在任何地方嗎? – Dzyann