【问题标题】:What are the options for finding nodes when using the composite pattern?使用复合模式时查找节点的选项有哪些?
【发布时间】:2009-02-25 02:20:05
【问题描述】:

除了递归查询每个节点,还有没有其他选项可以搜索给定标识符的节点?

【问题讨论】:

    标签: design-patterns composite


    【解决方案1】:

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

    我看不出任何类型的特定树查询(例如 xpath)正在寻找 a.b.c 形式的所有节点,而不仅仅是在级别 a 上遍历 b,并在 b 上遍历 c,在换句话说,某种过滤的递归树遍历。

    【讨论】:

      【解决方案2】:

      Visitor 在检查复合对象中的节点时总是很有趣。

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

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

      【讨论】:

        【解决方案3】:

        仅当您实施它时。 :-(

        (模式本身很少提及它的实现,不同的工具/平台有很大的不同。)

        【讨论】:

          【解决方案4】:

          您可以使用任何您想要的搜索。

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

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

          【讨论】:

            猜你喜欢
            • 2016-01-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-12-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多