2016-02-04 18 views
1

跟蹤樹結構中的葉子的好策略是什麼?複合設計模式 - 跟蹤樹結構中的葉子的策略

爲了我的目的,我的葉子上有名字,但名字並不意味着太多,不知道它們在樹中的存在位置。例如,可能有許多同名的葉子,所以我需要知道它們駐留在哪個「分支」上。

任何推薦的技術?

+0

在閱讀您的問題時,我首先想到的是XML和XPath。也許你可以在你的項目中採用XPath的想法。 –

回答

1

複合圖案可讓您在遍歷過程中以相同的方式處理您的樹葉及其父母\樹枝。此外,它還爲您提供了更改「主要功能」方法的邏輯,以針對聚合組件(或您的案例中的分支)迭代子代,並僅爲葉組件執行某些操作。

現在回到你有關於葉必須知道他們所屬的分支的問題 - 我認爲你的解決方案中的葉必須有一個引用回到他們的父/分支。然後,當您遍歷樹的葉子時,您可以將父信息與葉子信息一起顯示出來。如果你想知道父分支,這應該解決問題。如果你想保留高達2層(祖父母)或更高層次的信息,那麼你可以建立一個遞歸方法,向上遍歷,直到滿足一些祖先條件或達到樹的根。

總結我的觀點 - Composite Pattern的處理與以通用方式處理樹和分支有關。但是遇到它們時要執行的邏輯可以根據節點的類型而變化。這就給了我在上面段落中給出例子的節點類型具有特定邏輯的靈活性。這個邏輯是什麼 - 只要所有節點的基本類型相同並且遍歷順利進行,複合模式就不關心它。

我希望它有助於解決您的問題。我在我的博客中撰寫了一篇關於複合設計模式的文章 - http://www.javabrahman.com/design-patterns/composite-design-pattern-in-java/。你可以參考它來更好地理解這種模式 - 如果需要的話。

+0

謝謝。解決方案應該對我來說很明顯。每一片葉子都有一個對父母的引用,這使我可以輕鬆地回溯到根部。清潔和簡單。 –