gpt4 book ai didi

java - 使用接口(interface)来实现预编码的能力

转载 作者:行者123 更新时间:2023-11-30 02:51:24 25 4
gpt4 key购买 nike

我正在制作一款包含不同类型怪物的游戏。还有一个接口(interface)列表,每个接口(interface)代表生物可以拥有的一种能力。假设我有 100 个扩展生物类的对象,每个对象都包含不同的生物适用能力列表( Swing 、爆炸、跳跃等)。实现这些接口(interface)要做的就是向类添加空白方法。如果该能力的使用在所有小怪之间都是恒定的,我将如何使该能力成为预先编写好,这样我就不需要为每个实现它的生物重新编写它?

我确实知道默认方法,但它们是静态的,并且无法访问任何生物的变量,除非我将“this”作为参数传递,这是我不想做的事情。

我还知道,如果要使用接口(interface)来解决问题,那么这些接口(interface)只能由暴徒实现。

谢谢。

最佳答案

如果我理解正确的话,一个可能的解决方案是组合能力而不是继承它们。

interface Ability {
void doAbility();
}

class Firebending implements Ability {
private Mob mob;

public Firebending(Mob mob) {
this.mob = mob;
}

void doAbility() {
// mutate mob's state to spit fire, and attack the world
}
} // repeat this for each ability you have, flying, x-ray vision, doing taxes etc

class Mob {
private Ability[] abilities;

public Mob(Ability[] abilities) {
this.abilities = abilities;
}
}

通过这样的东西,您可以即时构建不同的生物,每个生物具有不同的能力集,适合生物种类多于能力数量的情况。是的,这将涉及将 Mob 类设计为能够灵活地以这种方式进行变异。

关于java - 使用接口(interface)来实现预编码的能力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38548523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com