我正在研究一個項目,其中每個類通常包含另一個類的實例列表。這在幾個層次上重複,所以Class1將包含Class2實例的列表,而Class2的實例又將包含Class3實例的列表等等。存儲有關類實例的其他信息的正確方法是什麼?
我想保持每個類獨立和獨立越好,這樣他們可以再次在不同項目中重複使用。
然而,在這種架構中,它經常發生,從上層階級不僅需要從較低層的訪問對象,但對他們的存儲元數據,這不應該是相關聯的對象可見。這不僅發生在相鄰的層,而且也具有彼此遠離的層。我想知道這有什麼可能的正確方法,因爲我擔心我現在使用的那個不是最好的。
我想到我的解決方案是:
- 對於每個類,創建一個存儲addictional所需信息的包裝。這可能是矯枉過正的(我們可能只需要存儲一些數據),我不確定如何將這個概念應用於遙遠的層面。
- 創建一個單獨的結構,其中包含元數據,並保留對象實例和元數據結構實例對。再一次,不確定如何在遠層使用此功能。
- 在下層創建公共成員,他們不能看到/使用,只能由更高級別的類使用。這解決了這個問題,但我認爲這是非常糟糕的做法,嚴重依賴外部代碼來保持良好,而不是「觸摸」元數據。
什麼是其他可能的解決方案?
,正如addictional信息,我編碼我在C++項目,但這不應該真正涉及到我的問題。
編輯: 這是一個例子,以更好地解釋我的意思:
假設有A類和B,這是完成和單機類。然後我們有C類,它是A類實例集合的管理器。爲此,它需要存儲有關它正在管理的每個A實例的上癮信息。此外,我們有D類,它包含一個類C的實例和一個來自B類的對象集合。最後一個類需要能夠將B類的每個實例與A類的一個實例相關聯(其由C級的受控實例管理),,反之亦然。
在這個例子中C和D所需的信息在哪裏以及如何存儲?
什麼是元數據?只是文字?一個有屬性的類?每個班級的元數據類型*是否不同? –
@BobHorn它可能是上層需要管理低級別的任何類型的信息:布爾值,字符串,向量/其他類型數據的列表等等。是的,元數據不僅在類上是不同的,而且它當然依賴於必須使用它的類(一個類可能與多個元數據結構相關聯,每個不同的上層類一個,或者如果沒有更高層)。不過,元數據類型不會在同一類的實例之間改變。 – Svalorzen
我會建議使用面向對象的方法爲每個應用程序創建包裝對象(對於元數據應該無關緊要的單個位或多個列表,乾淨而有意義的API和代碼維護更重要),並在「管理員」(C類,D類) 。例如,cObject.AddA(A aObject)也會創建包裝類並存儲在C對象的另一個列表中。 dObject.AddB(B bObject)將在D的C中找到合適的A對象,然後在保存的元數據中關聯D :) – Algirdas