java - 为单独的类提供通用方法

标签 java

我正在制作一个简单的基于文本的类似 RPG 的游戏,专注于遭遇和战斗,并且我正在尝试使用 OOP 创建一棵生物类型和生物的“树”,

这里是 Battler 的一些子类及其子类:

Battler
|-Player
|
|-Phantom
| |-Wisp
|
|-Undead
| |-Wraith
|
|-Elementals
  |-Lightning
    |-Spark Mote

事情是这样的:我计划为游戏中的每个咒语制定一个方法。举两个例子,让我们说 Ennervate 和 Shockwave。我想给幽灵强化, Spark 微粒冲击波,玩家两者(至少最终)和小 Sprite 都不给。

我可以看到一个解决方案,那就是将所有咒语转储到 Battler 中,但我可以预见,由于相当多的咒语最终集中在一个文件中,因此结局会很糟糕。

有更好的方法吗?

最佳答案

答案可能是:那就不要使用方法。

相反:创建某种表示“共享”功能的类,并让您的基类包含此类对象的列表。

换句话说:您在这里需要高度的灵 active ,而多态性并没有多大帮助。特别是考虑到您的背景:迟早,您可能会考虑获得能力的方法。含义:您的对象不仅有许多不同的方法,而且有时您希望它们“启用”,有时则不“启用”。

如:

class Spell {
  whatever ...
}

public abstract class Battler {
  private final List<Spell> spells = new ArrayList<>();

  ...

  public void addSpell(Spell newSpell) { spells.add(spell); }

  public List<Spell> getSpells() ...

关于java - 为单独的类提供通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51155070/

相关文章:

java - 如何从 Java EE 批处理作业发送电子邮件

java - 如何从 php 页面发送一些东西到 java 应用程序?

java - 在 gradle 中将源存档添加到基于本地文件的库

java - 从列表中删除重复元素

java - 创建一个 File 对象会创建一个物理文件还是触及 JVM 之外的任何东西?

java - 使用 RxAndroid 生成树排序结构

java - 自动调整 JButton 的大小和纵横比

java - Spring Cloud 负载均衡器和 Ribbon 有什么区别?

java - Firebase 性能插件导致构建时间缓慢

java - Kotlin 标准库中的 String 类是如何实现的?