Я хочу удалить многие условия if / else из моего кода. Я выбираю полиморфизм, чтобы заменить его. Я понял путь. Я копирую источник, который нашел в Inte rnet.
abstract class Bird {
// ...
abstract double getSpeed();
}
class European extends Bird {
double getSpeed() {
return getBaseSpeed();
}
}
class African extends Bird {
double getSpeed() {
return getBaseSpeed() - getLoadFactor() * numberOfCoconuts;
}
}
class NorwegianBlue extends Bird {
double getSpeed() {
return (isNailed) ? 0 : getBaseSpeed(voltage);
}
}
// Somewhere in client code
speed = bird.getSpeed();
Я согласен с вышеуказанным дизайном. Но я сомневаюсь, что если создание экземпляра объекта bird зависит от другого условия if / else. Тогда как его решить? Я очень смущен. Пожалуйста, простите меня. Это может быть очень тривиально. например,
if (LocalDateTime.now().getMonth().toString().equalsIgnoreCase("march")) {
Bird aBird = new European();
} else if (LocalDateTime.now().getMonth().toString().equalsIgnoreCase("August")) {
Bird aBird = new African();
}
speed = aBird.getSpeed();
Пожалуйста, дайте мне знать, как я могу покончить с этим, если / еще.