除了递归查询每个节点之外,还有其他选项可以在给定标识符的情况下搜索节点吗?
答案 0 :(得分:1)
访问者总是可以检查复合对象中的节点。
如果它们具有唯一的id,您可能希望累积一个索引,并直接引用Composite结构的每个部分。
另一方面,如果可以在复合结构中重用标识符,则可能不得不求助于类似XPath的搜索。
答案 1 :(得分:1)
如果您使用树,递归是最自然的事情。除此之外,您可以在树之外维护一个列表或集合,这似乎是多余的,或者您可以简单地线性迭代树节点列表,这可能会更慢,但至少会删除任何遍历特定的遍历来自节点的代码,如果它具有任何值。
我无法看到任何类型的特定树查询(例如xpath)如何寻找abc形式的所有节点,除了在a级遍历b,并遍历b的c之外,还可以做任何事情。换句话说,某种过滤的递归树遍历。
答案 2 :(得分:0)
只有实施它。 : - (
(模式本身对其实现的描述很少,不同的工具/平台会产生很大的不同。)
答案 3 :(得分:0)
您可以使用所需的任何搜索。
复合模式唯一说的是1个对象或这些对象的集合应该实现相同的接口。
该实现中发生的事情与复合模式无关。