2014-01-17 36 views
0

我有一個Element類來描述我的商業模式。元素業務數據的一部分是子元素(也是元素類型)。所以概念上它是一個樹形結構。元素的childern存儲在元素或樹節點中?

另一方面,我不想使用自己的樹實現 - 我想使用一些第三方樹實現。然而,在這些實現中,元素對象被節點對象封裝,並且每個元素的子節點列表都存儲在節點對象中(不在元素對象中)。

在這種情況下,正確的方法是什麼?

  • 我不想將元素類綁定到將包含元素(樹或其他結構)的數據結構。

  • 看起來子元素列表應該在父元素中,因爲它是其描述的一部分。

  • 而且我還想使用第三方樹實現。

回答

1

你的目標是互不相容的。

第三方庫無法修改您的對象,因爲它不知道任何關於它們的內容,所以除非它提供某種類型的接口,並且您編寫了所有處理自己的子項,否則無法構建樹以外的使用包裝。這是從java.util作品LinkedList相同的方式。您不希望LinkedList中的節點的引用需要存在於您添加到List的每個對象中。

既然你想要第三方庫,你幾乎立即綁定到包裝方法,除非你能找到一個使用接口方法的庫。 (我不知道一個,但我從來沒有找過一個!)。

+0

接口方法是什麼意思?你可以展示這種方法的代碼示例嗎? – rapt

+0

提供一個接口供您用作節點的庫。您的對象實現了該接口,然後該庫允許您將實現該接口的任何內容添加到樹中。我不知道有任何這樣的圖書館...... –

+0

謝謝,我現在明白了。你給了我一些想法...... – rapt