【发布时间】:2009-02-25 02:20:05
【问题描述】:
除了递归查询每个节点,还有没有其他选项可以搜索给定标识符的节点?
【问题讨论】:
除了递归查询每个节点,还有没有其他选项可以搜索给定标识符的节点?
【问题讨论】:
嗯,如果您使用树,递归是最自然的事情。除此之外,您可以在树之外维护一个列表或集合,这似乎是多余的,或者您可以简单地线性迭代树节点列表,这可能会更慢,但至少删除任何特定于遍历来自节点的代码,如果有任何价值的话。
我看不出任何类型的特定树查询(例如 xpath)正在寻找 a.b.c 形式的所有节点,而不仅仅是在级别 a 上遍历 b,并在 b 上遍历 c,在换句话说,某种过滤的递归树遍历。
【讨论】:
Visitor 在检查复合对象中的节点时总是很有趣。
如果它们具有唯一的 id,您可能希望累积一个索引,并直接引用复合结构的每个部分。
另一方面,如果标识符可以在复合结构中重复使用,您可能不得不求助于类似 XPath 的搜索。
【讨论】:
仅当您实施它时。 :-(
(模式本身很少提及它的实现,不同的工具/平台有很大的不同。)
【讨论】:
您可以使用任何您想要的搜索。
复合模式唯一说的是 1 个对象或这些对象的集合应该实现相同的接口。
该实现内部发生的事情与复合模式无关。
【讨论】: