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

迭代节点的层次结构 - 访问者和复合体?

如何解决《迭代节点的层次结构-访问者和复合体?》经验,为你挑选了1个好方法。

让我们想象一下,我有一组节点,我稍后会用于我的Renderer类.然后我有一个访问者类,可以访问节点或整个集合.这很简单,因为我的节点集合只是std :: list的包装器,只需要很少的额外方法.

问题是我希望节点(而不是简单列表)具有树状结构,因此节点可以有父节点和n个子节点.这将是方便的,因为我希望能够将一个节点传递给我的Renderer并将所有内容呈现在该节点的"下方".答案可能是复合材料.

我如何一起使用访客和复合?我已经读过它通常是一个很好的组合,但我的实现看起来很糟糕......我很想念......



1> 小智..:

我为我们的系统实现了非常类似的东西.我想要一种方法来组合几何对象的层次结构并将它们渲染到体积中.我使用复合模式来组成我的描述(根是Node,然后派生的子是compositeNode(节点列表).

CompositeNode有方法accept()接受访问者(访问者),然后在accept()内访问访问者 - >访问(this).

因此,您的访问者层次结构具有基类作为NodeVisitor和派生访问者,如RenderVisitor(呈现对象),ReportVisitor(将节点信息转储到文本中).您的基类需要接受基本和专用节点类型.

所以,是的,组合工作,我有工作代码,但我同意设计需要比你在网上阅读(Wiki或玩具示例)更多的努力.

希望这可以帮助

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