当前位置: 代码迷 >> java >> 数据驱动设计,引用数据
  详细解决方案

数据驱动设计,引用数据

热度:49   发布时间:2023-08-02 10:37:11.0

我正在尝试为我的游戏设计一个好的设计。 我目前正在测试一个数据驱动项目系统,我希望该系统非常灵活。

  • 我的武器需要某种类型的弹药。
  • 我有一种弹药的实际弹药。

如果玩家想发射武器,我需要查找库存中是否有正确的弹药类型。 实际的弹药也需要保持对弹药类型的引用。 当玩家拿起弹药时,??应该已经将其相互添加。

我目前正在考虑的是弹药类型的类,该类具有“短”字符串供参考,因为在Json文件中字符串更易读。 此类还包含弹药的信息,如专有名称和一些其他信息。 最后,我创建一个列表来容纳不同类型的弹药。

然后,当我创建实际的弹药(物品)时,我将从文件生成的弹药类型列表中选择一种类型。 这个弹药项目持有它的数量。 当弹药被击中并被击中时,我可能会在这里为不同类型的弹药使用接口和工厂(爆炸,穿刺,轻弹药的行为都不同)。

然后,当武器要发射时,我会通过查找“短”字符串来检查相应的弹药是否在玩家的物品清单中。

我想知道我是否在正确的轨道上。 我对使用弹药类型的“短”字符串的参考系统有疑问。 如果我创建了弹药类型的工厂,则可以检查我的武器射击方法中是否存在该类类型的弹药,并且我只会在工厂中使用短手绳来创建各种对象。

如果我想使用工厂并进行OOP,则需要很多课程。

[Ammo]
    [Bullet]
        [762mm] //I know this is not a valid class name, have to come up with something.
        [5.56mm]
        [Etc.] //Plenty more to come thanks to data driven
    [Rocket]
        [Tornado]
        [Etc.] //Plenty more
    [Grenade] //Launcher
        [Etc.]
    [Etc.] //..

但是对于每种类型,我都可以有一个界面并创建功能。 通过比较班级,我可以轻松比较弹药的类型。

如果我通过短字符串使用引用,则不必创建所有类,接口和工厂,而必须在较长的语句中设置弹药规则。 从长远来看,事情可能会变得混乱。

您对此有何想法或其他“更好”的方法?

由于以下原因,我建议不要采用差异化的OOP方法:

  • 数据驱动

您说弹药和武器将通过数据驱动的设计来创建。 很好,但是如果每种弹药都需要一个新的子类,则仍然需要实际实现该新类。 那是每个弹药。 轻松将新弹药加入游戏...

哪种弹药的逻辑在于什么枪需要放在某处。 您可以在OOP中完成此操作,但也可以将所有相关信息保存在通用数据表中(数据驱动! 您的代码将仅实现一般规则,而不会实现子弹类型与枪支等的实际关系。这将存储在数据库中。 您的代码保持不变,但是行为是由数据驱动的。缺点当然是您的测试现在需要处理数据库中的数据。

  • OOP与对象组成

如果您的对象确实遵循这个相当严格的模型,那么OOP很好,也很好。 我真的不是弹药专家,所以我可能是错的,但是否有可能想到具有几种父类型特征的弹药实体呢? 这种关系在OOP中很难建模。 这在JAVA OOP中是一个缺点,因为您不能从多个父母那里继承。 相反,您应该研究对象组成。

我认为您想从人类可读的标识符中提取一个短字符串是可以的。 这些也应该来自您的数据,并且不应进行硬编码。

  相关解决方案