gpt4 book ai didi

java - 避免在复合模式中使用 instanceof

转载 作者:搜寻专家 更新时间:2023-10-31 20:29:09 24 4
gpt4 key购买 nike

我正在为一个大学项目工作,我们正在编写一个游戏。在此游戏中,可能会出现多种效果,并且一种效果会影响另一种效果的表现。现在的想法之一是使用复合模式,起初看起来像是一个可靠的解决方案。这里最大的问题是效果的行为方式取决于它所耦合的效果,我们看到解决此问题的唯一方法是使用 .getClass() 或 instanceof,我们希望不惜一切代价避免这种情况。

有哪些方法可以设计这个问题?

编辑(一个小例子):我没有明确的代码示例,但我将尝试通过以下示例进行一些说明:

因此游戏中有手榴弹(显然可以爆炸并造成伤害),这种爆炸被视为“ExplosionEffect”。手榴弹所在的方 block 在运行时可能会发生电源故障 (PowerfailureEffect)。 ExplosionEffect 和 PowerfailureEffect 可以耦合,这会导致爆炸更强烈并造成更多伤害。 ExplosionEffect 还可以与其他效果相结合,导致爆炸伤害表现得更加不同

最佳答案

您可以使用访问者设计模式。所有效果类都实现了一个 Effect 接口(interface)。主类使用 Effect 接口(interface)方法询问 EffectB 类它应该如何表现。EffectB 类中 Effect 方法的实现调用主类中的正确方法。

关于java - 避免在复合模式中使用 instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16188836/

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