我試圖設計一個類結構具有以下多個集合容器類:設計實踐與相互引用
- 集裝箱類持有的所有項目。
- 項目收集類,這是所述的容器,其中,每個項目都有一個唯一的ID和其他一些數據,包括一個ItemStyle基準內部。
- ItemStyle集合類,這是集裝箱,其中每個ItemStyle代表項目的共同風格,也給其他款式的關係裏。
關係可以是「附加到」,其中樣式具有可以附加到的其他樣式的列表,而「附件」是與其相反的。如果一種風格可以「附加到」另一種風格,那麼其他風格應該能夠產生作爲其「附件」之一的第一種風格。
容器管理項目和ItemStyles。我爲所有內容使用唯一的ID,因爲我希望能夠序列化XML和XML。
但是我一直遇到邏輯問題,例如我試圖從XML反序列化一個ItemStyle,但它當然不能生成對它讀取的項目ID的引用,因爲只有容器本身可以訪問其他項目。
另一個問題是我希望這些類是獨立的,如果我有一個項目的引用,我可以調用一個兼容的項目列表,如調用「Item.Attachments」或「Item.AttachesTo」。這當然都需要由容器來計算,因爲它是唯一能夠訪問ItemStyles和Item集合的類。
於是我運行到我要去的地方有給每個項目和ItemStyle一個參照容器,使他們能夠執行自己的查詢,並確定其與其他項目的關係的解決方案。這看起來很糟糕的封裝和糟糕的面向對象操作,但我想不出其他任何方式。
我想我的代碼比較到ListView如何工作的一個例子。一個ListView有一個ListViewItemCollection和ListViewItems。在用戶代碼中,當您可以創建新的ListViewItem並將其添加到ListViewItemCollection時,它現在會自動引用其父級ListView。查看元數據時,它將ListView引用顯示爲只有一個getter。我可以假設它使用內部設置?
如果以下所有者/項目的關係的工作與我的課ListView的模式?