Я пытаюсь написать программу Java, которая инициализирует определенные макеты на основе того, что выбирает пользователь. Что я хочу сделать, так это попытаться избежать написания кучи if-операторов, чтобы код можно было масштабировать для будущего использования, если потребуется добавить больше макетов. Я слышал, что лучший способ реализовать это - использовать полиморфизм, но мое понимание полиморфизма все еще немного нечеткое.
Допустим, я хочу реализовать этот случай:
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}
}
Затем где-то в main:
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 в основной программе, чтобы выяснить, какой макет выбрал пользователь во время выполнения?
Спасибо!