gpt4 book ai didi

java - 如何编写对多种对象(Java)具有相同实现的方法?

转载 作者:行者123 更新时间:2023-12-01 18:19:06 25 4
gpt4 key购买 nike

我正在用 Java 编写(当前)基于字符串的 Pokemon 游戏。根据我的结构,目前我想要对两种对象进行类型匹配:口袋妖怪和招式。我想编写的方法(isStrongAgainst())对于两者来说都是相同的。例如,水系口袋妖怪和水系招式对火系口袋妖怪来说都很强大,但这些比较可能会根据上下文暗示不同的事情。这两个类都有不同的 isType() 方法实现。

我的想法是使用一个实现默认 isStrongAgainst() 方法并声明抽象 isType() 方法的接口(interface)。我认为,由于任何实现此接口(interface)的类都必须实现 isType(),我可以在 isStrongAgainst() 中使用它,但我不能。针对我的问题,有什么办法可以解决这个问题或者有更好的建议吗?

public interface TypeMatch<T> {
boolean isType(Type t);
default boolean isStrongAgainst(Pokemon opponent){
if(T.isType(Type.NORMAL)){
return false;
}
if(T.isType(Type.WATER)){
return opponent.isType(Type.FIRE) ||
opponent.isType(Type.ROCK) ||
opponent.isType(Type.GROUND);
} //etc...

最佳答案

据了解,您的游戏根据神奇宝贝的类型包含不同的行为。我强烈建议您使用strategy design pattern

关于java - 如何编写对多种对象(Java)具有相同实现的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60313834/

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