当前位置:  开发笔记 > 编程语言 > 正文

为什么访问者负责以访客模式列举儿童?

如何解决《为什么访问者负责以访客模式列举儿童?》经验,为你挑选了1个好方法。

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

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



1> Rob Kennedy..:

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

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

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

如果你想要一个简单的操作并让集合为你提供每个项目,那么你希望集合为自己提供一个迭代器.在迭代器为您提供的每个东西上调用您的函数.

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

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有