[英]Correct way to manage inheritance
目前我的代码如下:
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
报表?
更新:我有一组模型,可以在不同的位置进行不同的处理。 想象一下,这些都是宠物。 一家宠物店可能想要让猫与其他猫交互,并且狗与其他狗互动,而家里可能想要在同一地点养狗和猫。
所以每个模型都不知道如何在给定的情况下进行交互。
您可以在Animal
每个子类中定义processAnimal
方法,然后通过animal.processAnimal()
调用它。 根据animal
对象的确切类别,将调用正确的方法。
ArrayList<Animal> animals = new ArrayList<Animal>();
animals.add(new Dog());
animals.add(new Cat());
animals.add(new Bird());
for (Animal animal : animals) {
animal.processAnimal(); // appropriate method for each object will be called
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.