我有这个凌乱的代码,我真的很想清理它,因为它有大约 12 个 else if,每个 if 语句都会检查 instanceof 2 个对象,例如: If (parentObj instanceof superclass && parentObj2 instanceof superclass)
每个 if 语句执行不同的东西,所以我认为多态不会让它变得更好。还因为这个小功能的 12 个不同的超类(大多数 if 语句执行 1 个衬里)会有点荒谬。多态性不起作用的另一个原因是我无法访问父类或超类。我知道许多 instanceof 条件通常不好做,即使我从来没有真正理解为什么。在每个 if 语句中执行的方法不是父类,而是超类,这就是为什么我需要检查它们的类型,以便我可以转换它们并执行这些方法。关于如何清理它的任何想法?谢谢!
编辑:对不起,我在手机上写了这个。无论如何,下面是我正在处理的一个例子。我已经查看了策略模式,我唯一关心的是出于同样的原因,我必须创建许多不同的类,并且我觉得创建许多不同的对象只是为了始终执行 1 班轮会有点浪费. 在我看来,在策略设计中,我仍然需要进行许多 instanceof 检查才能知道要执行哪个策略。无论如何,下面是一些代码:p
if (plotBlockState instanceof Sign && UpgradeBlockState instanceof Sign) {
//do Sign Stuff
}
else if (plotBlockState instanceof Chest && UpgradeBlockState instanceof Chest) {
//do Chest Stuff
}
else if (plotBlockState instanceof Dispenser && UpgradeBlockState instanceof Dispenser) {
//do Dispenser Stuff
}
else if (plotBlockState instanceof Furnace && UpgradeBlockState instanceof Furnace) {
//do Furnace Stuff
}
else if (plotBlockState instanceof BrewingStand && UpgradeBlockState instanceof BrewingStand) {
//do Brew Stand Stuff
}
else if (plotBlockState instanceof Hopper && UpgradeBlockState instanceof Hopper) {
//do hopper Stuff
}
else if (plotBlockState instanceof Dropper && UpgradeBlockState instanceof Dropper) {
//do dropper Stuff
}
else if (plotBlockState instanceof Beacon && UpgradeBlockState instanceof Beacon) {
//do beacon Stuff
}
else if (plotBlockState instanceof CreatureSpawner && UpgradeBlockState instanceof CreatureSpawner) {
//do spawner Stuff
}
else if (plotBlockState instanceof NoteBlock && UpgradeBlockState instanceof NoteBlock) {
//do noteblock Stuff
}
else if (plotBlockState instanceof Jukebox && UpgradeBlockState instanceof Jukebox) {
//do jukebox Stuff
}
else if (plotBlockState instanceof Skull && UpgradeBlockState instanceof Skull) {
//do skull Stuff
}
else if (plotBlockState instanceof CommandBlock && UpgradeBlockState instanceof CommandBlock) {
//do commandblock Stuff
}