我目前正致力于用Java编写基于回合制的策略游戏,我现在需要开始为某些游戏元素定义规则和行为。具体来说,地图上的每个图块都将包含建筑物。每个转弯,每个建筑物将根据建筑物的类型生产或消耗资源(木材厂将消耗1个原木并生产1个木材,面包店将消耗1个小麦并生产一个面包等) 。 Building
类是通用的,字段buildingType
表示它是什么类型的建筑物,BuildingType
是枚举。对于同一类型的每个建筑物,这些规则将是相同的(所有面包店将遵守相同的规则等),并且它们将在整个游戏中保持不变。
我遇到问题的部分是在哪里定义这些规则。到目前为止,我已经提出了三个选择:
BuildingType
的规则。Building
创建BuildingType
的子类,并将与该建筑类型对应的规则定义为每个Building
子类中的静态字段。现在,我考虑选项2有几个原因:
Buildings
将表现完全相同的方式,只遵守不同的规则。因此,创建一堆简单定义不同常量的不同类似乎需要很多开销。static final
常量似乎是确保规则是只读的最佳方法。我的问题是,在游戏中存储常量规则的标准惯例是什么?选择我错过的选项1或3有什么好处吗?是否有任何缺点,除了最终得到一个非常长的java文件,选项2,我没有看到?