我必須這樣做不對。這在當時似乎是一個好主意,但隨着我進一步深入,我認爲有一個更合適的方案去實現它。因此,我問你...
一注。我正在使用Google AppEngine和數據存儲來存儲這些信息。
好吧......可以說我有車的一個超類,然後有3個子類...汽車,卡車,摩托車。
在超類中,有3個屬性...製造商,型號,類型
例如,這些可能是:
- 製造商:福特
- 型號:關注
- 類型:汽車
所以在數據存儲中,我有許多具有這些屬性的Vehicle實體。 所以,如果用戶想要看到所有的汽車......我用「汽車」類型來拉動汽車。
然後,如果用戶想要添加這些車輛之一的「收藏夾」列表中,我基於它是什麼類型,然後轉換的車對象到其具體的子類。然後添加該特定子類的額外屬性。
這個新的子實體存儲在數據存儲中,並添加了它的屬性。
所以基本上,我是從汽車到汽車的向下轉彎。我通過在Car類中創建一個額外的構造函數來完成此操作,該類將Vehicle作爲參數。一旦創建,Car對象現在具有所有屬性(製造商,型號,類型)集以及與其特定實現一起提供的所有新屬性。
這似乎錯綜複雜,錯誤。它的工作原理,但必須有一個更好的方式來做到這一點。
我選擇了這條路的主要原因是因爲GAE數據存儲的工作方式。它的「便宜」來存儲超級類別和它的有限屬性並查詢它們。很長的故事。
我試圖環繞使用接口和/或抽象類爲這個我的頭,但我希望得到您的所有投入。
感謝您的幫助。