让我们说我在游戏中有行星,我也有太空飞船。我有太空船是海盗,我有航天飞机的航天飞机。我的行星也是海盗行星。显然我可以为每种类型添加一个开关并添加子类型等,但它似乎很快变得泥泞。
像: 枢纽是一颗行星 行星不是枢纽 枢纽可以是海盗 船可以是海盗 班车可以是一艘船 一艘船不能是班车
类型和子类型的继承。我目前正在进行子类和类型的组合,但我认为很难保持简单和强大。
这些复杂类型系统是否有良好的模式或架构?
答案 0 :(得分:1)
基本方法是弄清楚哪些实体具有共同的特征,并确保它们从相同的基类继承。
例如,所有船只和行星都在轨道运行,因此它们都可以从SpaceBornObject
继承。
空间站,行星,船只等都可以从中继承。
同时;空间站和船舶均已建成;所以他们也可以从一个共同的类继承,或者从另一个继承。
航天飞机和海盗船并不需要分开上课;这就是构图发挥作用的地方:
考虑一个Faction
类;然后,依据SpaceBornObject
字段Faction *controlledBy;
,或其他相似的东西。