正确的管理继承的方法

时间:2014-02-23 20:30:23

标签: java oop

目前我有这样的代码:

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声明?


更新:我有一组模型,可以在不同的位置进行不同的处理。想象一下,这些都是宠物。一家宠物店可能想要让猫与其他猫交互,狗与其他狗互动,而家里可能想要在同一地点养狗和猫。

因此每个模型都不知道在给定情况下如何进行交互。

1 个答案:

答案 0 :(得分:3)

您可以在processAnimal的每个子类中定义Animal方法,然后通过animal.processAnimal()调用它。根据{{​​1}}对象的确切类别,将调用正确的方法。

animal