Design patterns 复合设计模式-树结构中跟踪叶子的策略

Design patterns 复合设计模式-树结构中跟踪叶子的策略,design-patterns,composite,Design Patterns,Composite,跟踪树结构中的叶子的好策略是什么 出于我的目的,我的叶子都有名字,但如果不知道它们在树中的位置,名字就没有什么意义。例如,可能有许多同名的叶子,所以我需要知道它们位于哪个“分支”上 有什么推荐的技术吗?复合模式可以让你在穿越时以同样的方式对待你的叶子和它们的父母\分支。此外,它还为您提供了更改“main functional”方法的逻辑的工具,以迭代聚合组件(在您的例子中是分支)的子级,并只为叶组件做一些事情 现在回到关于叶必须知道它们所属的分支的问题上——我假设解决方案中的叶必须有一个对它们的

跟踪树结构中的叶子的好策略是什么

出于我的目的,我的叶子都有名字,但如果不知道它们在树中的位置,名字就没有什么意义。例如,可能有许多同名的叶子,所以我需要知道它们位于哪个“分支”上


有什么推荐的技术吗?

复合模式可以让你在穿越时以同样的方式对待你的叶子和它们的父母\分支。此外,它还为您提供了更改“main functional”方法的逻辑的工具,以迭代聚合组件(在您的例子中是分支)的子级,并只为叶组件做一些事情

现在回到关于叶必须知道它们所属的分支的问题上——我假设解决方案中的叶必须有一个对它们的父/分支的引用。然后,当您遍历树中的叶子时,您可以将父信息与叶子信息一起显示出来。如果您想了解父分支,这应该可以解决问题。如果您想保留最多2层(祖父母)或更多层的信息,那么可以构建一个递归方法,该方法向上遍历,直到满足某个祖先条件或到达树的根为止

总结一下,我的点复合模式的处理与以通用方式处理树和分支有关。但遇到每一个节点时要执行的逻辑可能会根据节点的类型而有所不同。这使得具有特定于节点类型的逻辑具有灵活性,我在上面的段落中给出了一个示例。只要所有节点的基本类型相同并且遍历过程顺利进行,逻辑复合模式中的内容就与此无关


我希望这有助于解决你的问题。我在我的博客上写了一篇关于复合设计模式的文章。如果需要的话,您可以参考它来进一步了解这种模式。

在阅读您的问题时,我想到的第一件事是XML和XPath。也许您可以在项目中采用XPath的想法。谢谢。解决办法对我来说应该是显而易见的。每片叶子都有一个对其父叶的引用,这使我能够轻松地遍历到根。干净简单。