我正在制作一个简单的基于文本的类似 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/