Я пытаюсь написать java-программу, которая инициализирует определенные макеты на основе того, что пользователь выбирает. То, что я хочу сделать, - попытаться избежать написания кучи if-операторов, чтобы код мог быть масштабируемым для будущего использования, если необходимо добавить дополнительные макеты. Я слышал, что лучший способ реализовать это - использовать полиморфизм, но мое понимание полиморфизма все еще немного нечеткое.Java: используя полиморфизм, чтобы избежать if-statements?
Скажем, я хочу, чтобы реализовать этот случай:
if (user choose layoutA) { initialize layoutA }
if (user choose layoutB) { initialize layoutB }
if (user choose layoutC) {initialize layoutC }
Я думал о создании интерфейса для классов для реализации. Что меня смущает, так это то, как это работает в main(), разве мне не нужно условное выражение if или switch, чтобы выяснить, какой класс необходимо создать?
interface LayoutHandler {
public void initializeLayout();
}
class layoutA implements LayoutHandler {
public void initialize Layout {initialize layout A}
}
class layoutB implements LayoutHandler {
public void initialize Layout {initialize layout B}
}
class layoutC implements LayoutHandler {
public void initialize Layout {initialize layout C}
}
Тогда где-то в основном:
public static void main() {
getlayoutselectionfromuser()
if (user choose layoutA) { LayoutHandler layout = new layoutA(); }
if (user choose layoutB) { LayoutHandler layout = new layoutB(); }
if (user choose layoutC) { LayoutHandler layout = new layoutC(); }
}
не я по-прежнему требует переключения или Условного оператора в основной программе, чтобы выяснить, какой макет пользователь выбрал во время выполнения?
Спасибо!
Вы можете использовать отражение, чтобы избежать утверждений if вместе. – Dan