Java: использование полиморфизма для предотвращения операторов if?

Я пытаюсь написать программу 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 в основной программе, чтобы выяснить, какой макет выбрал пользователь во время выполнения?

Спасибо!

15
задан user459811 27 September 2010 в 18:50
поделиться