我如何表明这种情况的差异?

时间:2009-06-22 01:18:43

标签: c# oop scenegraph

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

编辑:看来我提供的信息不足。这是我在当前层次结构中提供的尽可能多的信息:

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

1 个答案:

答案 0 :(得分:0)

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

我想在设计方面你需要问自己叶子节点与转换节点的区别。如果它纯粹是节点的属性,那么使用属性可能是最优雅的解决方案,但如果它们有不同的行为,那么它会指向不同的类。

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