gpt4 book ai didi

c++ - OO 设计 - 传播属性

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:01:36 24 4
gpt4 key购买 nike

我是一位经验丰富的 C 程序员,涉足 OO 设计(特别是 C++)。我有一段特别讨厌的代码,想用 C++ 清理。

该代码实现了用于 3d 图形应用程序的显示树。它是一个条目的链接列表,其中有一个类型字段指定条目是窗口、几何特征还是灯光等。特别是几何特征可以是子特征集合的单个几何体,由存在一个单独的结构。

作为一个链表,它是一个平面结构,但顺序意味着层次结构。此外,每个条目都有一个属性结构,可以在列表中向下传播。

一个单独的函数允许遍历此列表,并在遍历列表时执行提供的函数指针。以这种方式使用的每个函数都必须适当注意维护属性结构,因为它在列表中传播,这是渲染错误的常见原因(通常是没有意识到应该重绘的东西,因为它们是一组条目的一部分,例如)

虽然 OO 设计的某些方面让我眼前一亮,但我很想听听:

  1. 我如何最好地实现能够将函数指针传递到列表(或 vector - STL vector 是否适合这样的列表?)

  2. 将窗口和几何特征实现为相关(甚至相同)类是否正确

  3. 如何最好地设计一个可以拥有自身集合的类

  4. 关于对象之间属性传递的任何建议(例如颜色、比例)。所需的行为是修改一个特征将改变该特征及其包含的任何子特征的属性,而修改一个子特征将只修改该特征。

我意识到这是一个冗长而广泛的问题,因此感谢您对上述任何问题的看法。谢谢!

最佳答案

1) 使用boost::function和 STL 算法,例如 for_each count_if
2)从 View 中划分模型。一切都会安好的。
3) GoF design pattern Composite
4) 要对更改使用react,请查看 GoF design pattern Observer

关于c++ - OO 设计 - 传播属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/705459/

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