當談到屬性列表時,我的意思是存儲一個類的附加信息的通用列表。你將如何實現屬性列表?
最簡單的情況:
一個班有一個std::map<std::string, std::string>
。第一個字符串命名屬性(如"Color"
),第二個字符串描述該值(如"Yellow"
)。
在本例中,使用這些屬性的另一個類需要檢查映射中是否存在某個特定的屬性名稱,然後解析該值。
但是,在談論性能時,這不是最好的概念。
你將如何實現這樣一個屬性列表?
是否有任何設計模式或庫只是做這樣的事情?
我特別感興趣的是C++ - 這樣做的方式,但是如果有獨立於語言的解決方案,請發佈它們。
在類需要動態屬性且用戶不想爲每個屬性繼承的情況下,可以使用屬性列表。
是否有幫助,你可以檢查我的有關該主題的其他問題:
Attributelists or inheritance jungle?
編輯:
當然,我忘了一些資料(多虧了註釋):
的屬性可以被應用到對象。對於同一類的對象可能有不同的屬性。對象所具有的屬性可能會發生變化(值可能會更改,可能會添加/刪除屬性)
希望這可以讓我們更清楚一點。
這些「屬性」是每個類還是它們是每個對象?屬性在運行時可能會發生變化嗎?你打算如何使用屬性?這是一個有趣的問題,但是你沒有詳細說明屬性列表的要求。 – 2010-10-19 06:44:33
在硅片的權利 - 你設計這個基於你的實際要求重新運行的靈活性,內存使用情況,性能等..它可能是一個枚舉/字符串/ ints/boost的任何地圖:: boost :: any,variants,abstract base類,等等,或者如果你認爲你之前關於在這樣的「屬性列表」和繼承之間進行選擇的問題是相關的,那麼它意味着需求甚至是模糊的。 – 2010-10-19 07:05:43