gpt4 book ai didi

design-patterns - 访问者模式和复合模式的区别?

转载 作者:行者123 更新时间:2023-12-04 06:55:41 25 4
gpt4 key购买 nike

我没有看到任何区别。看起来两个模式都在尝试组合对象。谁能解释这两种模式背后的意图?

最佳答案

这些模式是 完全不同的!首先 Composite 是一个 structural patterns ,这意味着它用于构建数据结构。访客是 behavioral pattern ,负责人际关系和行为。

为了进一步解释一下,您使用 Composite 来构建对象树,其中所有项目都是 T 的子类型。 .但是 T 的子类之一(某种容器)可以容纳一组 child T s。想一个类Item比有两个子类:ProductBox . Box还可以收藏Item s,无论是产品还是盒子。这些嵌套的盒子可以保存更多的项目,所以我们正在有效地构建一个树状结构。

使用Visitor模拟虚拟调用避免instanceof - 类似的结构。见 Is This Use of the "instanceof" Operator Considered Bad Design?完整的例子。 Visitor 可以与 Composite 一起使用 - 就像上面的例子一样,如果 Item,你可以遍历树定义 accept(ItemVisitor visitor)方法。

我发现很难看出这两者之间有任何相似之处。

关于design-patterns - 访问者模式和复合模式的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11239983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com