【发布时间】:2023-04-07 11:03:01
【问题描述】:
我有以下 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() {...}
在 Animal 类中,但我无权访问 Animal 类的代码。 据我所知,使用 instanceOf 被认为是不好的 OOP 做法。在这种情况下如何避免使用 instanceOf ?谢谢。
【问题讨论】:
-
为什么不在
Animal上使用抽象的.drowned()方法?方法可以什么都不做 -
您在寻找访客模式吗?
-
溺水动物不爽=(
-
哇是
Human#drown中的代码写if (!(animal instanceof Fish)) { animal.drown(); }的复杂方式;-) -
反对票似乎很苛刻。
标签: java oop instanceof