我正在用Java编写(当前)基于字符串的Pokemon游戏。使用我拥有的结构,当前我要进行2种类型的对象类型匹配:宠物小精灵和移动。我要编写的方法(isStrongAgainst())两者都相同。例如,水上口袋妖怪和水上口袋妖怪对着火类口袋妖怪很强,但是这些比较可能会根据上下文暗示不同的事物。这两个类具有不同实现的isType()方法。
我的想法是使用实现默认isStrongAgainst()方法并声明抽象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...
最佳答案
据了解,根据口袋妖怪的类型,您的游戏包含不同的行为。我强烈建议您使用strategy design pattern。
关于java - 如何编写对多种对象(Java)具有相同实现的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60313834/