接口如何编写对多种对象(Java)具有相同实现的方法?
我正在用Java编写一个(目前)基于字符串的口袋妖怪游戏。根据我的结构,目前有两种对象需要进行类型匹配:口袋妖怪和移动。我想要编写的方法(isStrongAgainst())对于这两种方法都是相同的。例如,一个水型口袋妖怪和一个水型移动对火型口袋妖怪来说是很强大的,但是这些比较可以根据上下文暗示不同的事情。这两个类都有不同的isType()方法实现
我的想法是使用一个接口来实现一个默认的IsStrongAinst()方法,并声明一个抽象的isType()方法。我认为,由于实现此接口的任何类都必须实现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...
# 1 楼答案
我认为
isStrongAgainst()
函数可以进一步细化。 最好以这样一种方式来实现isType()
,即如果对手比我们弱,它将返回true
然后可以在函数
isStrongAgainst()
的返回语句中直接使用它最好的
PS:我现在正在上课,我会在结束后给出更详细的答案,如果可能的话,在那之前试着了解一下我所说的
# 2 楼答案
你可以:
# 3 楼答案
据了解,根据口袋妖怪的类型,您的游戏包含不同的行为。我强烈建议您使用strategy design pattern