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

标签 c++ oop

我是一位经验丰富的 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/

相关文章:

c++ - 将类函数实现从 .h 移至 .cpp 过程

c++ - 在 C++ 中制作基于文本的 RPG 游戏/模板的问题

c# - 通过反射区分类属性类型

c++ - cpp的一些基本问题

c++ - 继承类的强制转换顺序?

c++ - 在依赖派生类模板中使用 this 指针

c++ - 初始化指向同名函数的静态成员函数指针

python - 使用 __getattr__() 按需创建成员方法

php - OOPHP : Classes for SQL Server and MySQL

C++比较日期以获得年龄