使用复合模式时查找节点有哪些选项?

时间:2009-02-24 18:13:20

标签: design-patterns composite

除了递归查询每个节点之外,还有其他选项可以在给定标识符的情况下搜索节点吗?

4 个答案:

答案 0 :(得分:1)

访问者总是可以检查复合对象中的节点。

如果它们具有唯一的id,您可能希望累积一个索引,并直接引用Composite结构的每个部分。

另一方面,如果可以在复合结构中重用标识符,则可能不得不求助于类似XPath的搜索。

答案 1 :(得分:1)

如果您使用树,递归是最自然的事情。除此之外,您可以在树之外维护一个列表或集合,这似乎是多余的,或者您可以简单地线性迭代树节点列表,这可能会更慢,但至少会删除任何遍历特定的遍历来自节点的代码,如果它具有任何值。

我无法看到任何类型的特定树查询(例如xpath)如何寻找abc形式的所有节点,除了在a级遍历b,并遍历b的c之外,还可以做任何事情。换句话说,某种过滤的递归树遍历。

答案 2 :(得分:0)

只有实施它。 : - (

(模式本身对其实现的描述很少,不同的工具/平台会产生很大的不同。)

答案 3 :(得分:0)

您可以使用所需的任何搜索。

复合模式唯一说的是1个对象或这些对象的集合应该实现相同的接口。

该实现中发生的事情与复合模式无关。