Poderíamos implementar da seguinte forma:

        Carro meucarro;
        Scanner scan = new Scanner(in);
        System.out.println(“Entre com o tipo do carro (1-sedan/2-hatch):“) ;
        int tipo = scan.getNextInt();

        if(tipo==1)
          meucarro = new sedan(“”);
        else
        meucarro = new sedan(“”);

Veja que, dependendo do tipo, criaremos um objeto de um tipo diferente. Esse código é exemplo de implementação, mas não é a forma mais correta. Para isso usamos o método fábrica.

Esse método permite retornar em tempo de execução o objeto do tipo correto. Uma forma de implementá-lo seria a seguinte:

        Class fabricadecarros {
        public Carro getCarro(int tipo){
        switch(tipo){
        case 1: return sedan(“");
        break;
        case 2:  return hatch(“");
        }
        }
        }

Vejam que esse método então retornará de forma instantânea o objeto correto em tempo de execução, dependendo do argumento do método getCarro. Isso melhora a coesão entre as classes, pois qualquer alteração como a adição de novos carros só precisaria ser feita nesse método.

Copyright © 2014 AIEC.