1

我正在为 2D 场景图构建代码,并且我有一个抽象类 Node,它将用于指示可以在场景图中使用的项目类型。但是,由此实现的类具有不同的类型,例如叶节点和转换节点。我将如何指出这些差异?我会使用属性、其他接口还是什么?

编辑:看来我提供的信息不足。以下是我可以提供的关于我当前层次结构的尽可能多的信息:

  • 节点接口
    • 需要一个名为 TransformationMatrix 的矩阵
    • 需要一个名为 Children 的 INode 列表
    • 需要一个名为 Parent 的节点
    • 需要实现一个名为 Draw 的方法,该方法将一个 Matrix 作为参数并且不返回任何内容
  • 节点类
    • 实现 INode 接口
    • 绘图调用(具有 1 个矩阵类型参数的虚拟 void)仅调用每个子 INode 的 Draw 方法。
  • 从 Node 派生的各种类
    • 这些是实际节点,可以是转换节点、叶节点等。
4

1 回答 1

0

由于您没有向我们提供有关您的问题域的太多信息,因此很难向您提供建议。此外,您正在混合您的术语,所以我不清楚您是否将叶节点和转换节点视为接口、抽象类或类。

我想就设计而言,您需要问自己叶节点与转换节点的区别。如果它只是纯粹的节点属性,那么也许使用属性可能是最优雅的解决方案,但如果它们具有不同的行为,那么它会将我指向单独的类。

根据名称,我们可以假设转换节点是“可转换的”,因此具有“转换”方法,但叶子节点不可转换。那么我建议叶节点最好不要有转换方法并且在不同的类中。

于 2009-06-22T07:13:26.400 回答