我有以下 Java 系统:
public class Human {
public void drown(Animal animal) {
if (animal instanceOf Fish) {
return;
} else {
animal.die();
}
}
}
public abstract class LandAnimal extends Animal{...}
public class Tiger extends LandAnimal{...}
public abstract class Fish extends Animal {...}
public class Trout extends Fish {...}
我想过添加一个方法
public abstract boolean drownable() {...}
在动物类中,但我无权访问动物类的代码。 据我所知,使用 instanceOf 被认为是不好的 OOP 实践。在这种情况下如何避免使用instanceOf?谢谢。
最佳答案
drown()
Human
中的方法应该是(顺便问一下,人类为什么要淹死动物?):
public void drown(Animal animal) {
animal.drown();
}
每个 Animal
就会知道该怎么做,例如:
// in class Tiger
public void drown() {
die();
}
// in class Fish
public void drown() {
// do nothing, fish can't drown
}
关于java - 避免在观察者方法中使用instanceOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126168/