oop - 访问者设计模式和深度优先搜索之间的区别?

标签 oop search design-patterns tree visitor-pattern

深度优先搜索似乎能够执行与访问者设计模式类似的功能。访问者允许您定义一些数据结构并根据需要在这些结构上添加操作(以多个访问者的形式),而无需修改结构本身。 wikipedia 上提供了访问者模式的描述。如果我们对数据结构进行深度优先搜索(或任何其他图搜索算法,如广度优先搜索),并且每次找到该结构的元素时,我们都运行我们想要的操作,那么这似乎执行相同的功能访客。例如,考虑一棵树。即使树的某些节点具有不同的类型,我们仍然可以在进行 DFS 时检查节点类型,然后根据节点类型执行不同的操作。

最佳答案

深度优先搜索就是这样——搜索。访问者模式与深度优先搜索是正交的,因为访问者不一定关心树是如何遍历的;它只知道它需要在/到/对每个节点做什么。

关于oop - 访问者设计模式和深度优先搜索之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299119/

相关文章:

java - java代码的重构

javascript - 模拟 Javascript 面向对象编程 Stoyan Stefanov 书中的字符串 split()

c# - Lucene 3.0.3 中的地理空间搜索 - API 重大更改?

algorithm - 图形中是否有类似于mipmaps的数据存储模式?

Java奇怪的NoClassDefFoundError

java - 为什么对抽象类而不是接口(interface)进行编程是错误的?

php - 根据 where 子句选择行时,如何匹配完整的单词?

c# - 在两个 HashSet 中搜索

python - 如何避免设计成员函数相互依赖的类?

ios - 我应该从我的模型还是 Controller 调用我的 API?