我有班级结构
>公共抽象类AbstractBuilding实现了一些不相关的
这个问题的接口.
>公共抽象类AbstractAnimalBuilding扩展了AbstractBuiling
以下结构中的少量类:
>公共类AnimalBuildingA扩展了AbstractAnimalBuilding
>公共类AnimalBuildingB扩展了AbstractAnimalBuilding
>公共类AnimalBuildingC扩展了AbstractAnimalBuilding
>公共类AnimalBuildingD扩展了AbstractAnimalBuilding
在一个完全独立的类中,我有以下方法:
@FXML
private Button btnAnimalBuildingA;
@FXML
private Button btnAnimalBuildingB;
@FXML
private Button btnAnimalBuildingC;
@FXML
private Button btnAnimalBuildingD;
for (AbstractAnimalBuilding animalBuilding: animalBuildings){
if (animalBuilding instanceof AnimalBuildingA) {
changeButtonDisplay(btnAnimalBuildingA)
} else if (animalBuilding instanceof AnimalBuildingB){
changeButtonDisplay(btnAnimalBuildingB)
} else if (animalBuilding instanceof AnimalBuildingC) {
changeButtonDisplay(btnAnimalBuildingC)
} else if (animalBuilding instanceof AnimalBuildingD){
changeButtonDisplay(btnAnimalBuildingD)
//Do something specific here
}
}
private void changeButtonDisplay(Button buttonToChange){
button.setVisible(true);
}
其中animalBuildings是一个Set< AbstractAnimalBuilding>包含AnimalBuildingX的任何组合.
假设需要保留顶部的结构(例如,AnimalBuildingX以扩展AbstractAnimalBuilding),那么在确定什么样的建筑物动物建筑物时,哪种方法比多个if-then-else语句更好?
是否可以简单地创建一个新的接口,如this问题中所述,并让每个AnimalBuildingX实现它,同时仍然扩展AbstractAnimalBuilding或有一种方法,我可以使用我目前的结构.