gpt4 book ai didi

design-patterns - 为什么访问者负责在访问者模式中枚举子级?

转载 作者:行者123 更新时间:2023-12-04 09:38:34 25 4
gpt4 key购买 nike

根据我发现的代码,似乎需要访问者知道被访问对象的结构并调用所需的子对象。在某些情况下,即使访问的类被修改,访问者也希望继续工作,这似乎有点笨拙。

我想真正的问题是:它们是一种由访问代码而不是访问者代码完成枚举的模式吗?

最佳答案

访问者对象需要知道它访问的事物的结构。不过没关系。您应该为访问者知道如何访问的每种类型的事物编写专门的访问操作。这允许访问者决定它真正想要访问多少以及以什么顺序访问。

假设你有一棵树。一个访问者可能进行预序遍历,一个可能进行中序遍历,而另一个访问者可能只对叶节点进行操作。访问者类可以完成所有这些事情,而无需对树类进行任何更改。

访问者知道结构,但这并不一定意味着访问者执行的操作知道所有结构。您可以将访问者与命令结合使用。给访问者对象一个命令对象,访问者将在它访问的每个事物上调用该命令。

如果你想有一个简单的操作,让集合给你每个项目来操作,那么你希望集合提供一个迭代器 为自己。在迭代器给你的每一件事上调用你的函数。

如果您想以各种顺序迭代树的节点,那么树将需要提供多个迭代器。如果要按树不支持的顺序处理节点,则需要修改树类。

关于design-patterns - 为什么访问者负责在访问者模式中枚举子级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/522803/

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