在哪里存储Visitor模式中访问的每个元素的计算结果

Where to store the result of the computation on each element visited in the Visitor pattern?

本文关键字:计算 结果 元素 访问 存储 Visitor 模式 在哪里      更新时间:2023-10-16

我正在尝试使用访问者(从"将算法与数据结构分离"的意义上)。我看到的所有例子都做了一个类似于sum的事情——访问者是SumVisitor,并存储一个ivar"sum",它只是添加它访问的每个元素的值。但是,如果要将计算结果与每个元素相关联,该怎么办?作为一个简单的例子,假设您希望算法(访问者)对其访问的每个元素进行平方。您将结果存储在哪里?我唯一能想到的是存储在访问者中的类似vector>的东西,但这似乎很奇怪。关于如何做这样的事情有什么建议吗?

您有四个选项:

1) 如果有地方放它们,就以某种方式将它们存储在原始数据结构中。

2) 将它们存储在访问者中(例如,使用从元素到结果的映射)。

3) 将它们存储在其他地方,并将"其他地方"传递给访问者,使其知道将结果放在哪里。

4) 创建一个新的数据结构,以便在执行过程中存储它们。

你选择哪一个取决于你想要实现的目标。