如何管理具有大量子类的超类?

时间:2011-08-19 14:32:20

标签: data-structures

我正在阅读较旧的问题而且this one让我想知道你将如何管理如此大量的子类(示例问题中的100多个),因为有几条评论说这是非常糟糕的做法用类来做这件事。

简单的例子,像Minecraft这样的游戏 - 一切都是块,所以有一个明确的超类。但是每个块类型都有自己的密度,纹理,重量,出现机会等属性值,以及许多子类特定的属性值。 因此,如果游戏有几十种类型的块,你如何以“适当的”OOP方式管理它?

是否有更好的数据结构可供使用而不是纯类?如果它只是大量的数字属性,你可以使用更简单的东西(甚至只是一个配置文件),但是很可能会有许多子类的特定代码。

NB 由于这是一个稍微更普遍的问题而不是我试图实施的问题,我不确定这是否更适合programmers.stackexchange.com。如果是,请在评论中告诉我,我会关闭这个问题并在那里问它。我也不确定如何标记这个,所以随时编辑!

1 个答案:

答案 0 :(得分:1)

可以使用图形数据结构,其中节点是“块”,节点属性是节点的属性。如果“块”具有一些子结构,则可以使用与其父节点相关联的(子)节点来表达。然后使用创建不同类型块节点的工厂方法。

这是一种非常灵活的方法,因为图形数据结构始终保持不变,但您将复杂性转移到管理和处理不同配置的节点/图形......