Java: usando polimorfismo para evitar declarações if?

Estou tentando escrever um programa java que inicializa determinados layouts com base no que o usuário seleciona. O que eu quero fazer é tentar evitar escrever um monte de instruções if para que o código possa ser escalável para uso futuro se mais layouts precisarem ser adicionados. Ouvi dizer que a melhor maneira de implementar isso é usar polimorfismo, mas meu entendimento sobre polimorfismo ainda é um pouco confuso.

Digamos que eu queira implementar este caso:

if (user choose layoutA) { initialize layoutA }
if (user choose layoutB) { initialize layoutB }
if (user choose layoutC) {initialize layoutC }

Eu estava pensando em criar uma interface para as classes implementarem. O que me confunde é como funciona em main (), ainda não precisarei de uma declaração condicional if ou switch para descobrir qual classe instanciar?

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}
}

Então, em algum lugar no 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(); }

}

Eu ainda não precisaria de uma opção ou instrução if no programa principal para descobrir qual layout o usuário escolheu durante o tempo de execução?

Obrigado!

questionAnswers(9)

yourAnswerToTheQuestion