目前我有这样的代码:
public void processAnimal(Animal a){
if (a instanceof Cat){
processCat((Cat)a);
} else if (a instanceof Dog){
processDog((Dog)a);
} else if (a instanceof Bird){
processBird((Bird)a);
}
}
public void processCat(Cat c){
...
}
public void processDog(Dog d){
...
}
public void processBird(Bird b){
...
}
有没有办法摆脱样板if
声明?
更新:我有一组模型,可以在不同的位置进行不同的处理。想象一下,这些都是宠物。一家宠物店可能想要让猫与其他猫交互,狗与其他狗互动,而家里可能想要在同一地点养狗和猫。
因此每个模型都不知道在给定情况下如何进行交互。
答案 0 :(得分:3)
您可以在processAnimal
的每个子类中定义Animal
方法,然后通过animal.processAnimal()
调用它。根据{{1}}对象的确切类别,将调用正确的方法。
animal