1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Ajuda para substituir IF por class.forName no Factory Method

Estou com dificuldades em meu Código, nele eu informo o nome do carro e ele traz o valor dele utilizando o Factory method, na classe main eu atribuo o o nome do carro

public class FactoryExample {
    public static void main( String args[] ) {  

        Carro carro = CarroFactory.getCarro("Gol");  

        if( carro != null ) {  
            System.out.println( "Preço: " + carro.getPreco() );  
        }  
    }  

}

Depois disso a classe CarroFactory vai decidir qual objeto chamar

public class CarroFactory {

    public static Carro getCarro( String tipoCarro ) {  
        if( tipoCarro == null ) return null;  
        else if( tipoCarro.equals("Vectra") ) return new Vectra();  
        else if( tipoCarro.equals("Omega") ) return new Omega();  
        else if( tipoCarro.equals("Golf") ) return new Golf();  
        else if( tipoCarro.equals("Gol") ) return new Gol();  
        else return null;  
    }
}

isso gera um problema pois caso precise modificar o codigo precisarei modificar as classes com os objetos e a factory. Preciso subtituir esses ifs, me foi indicado o uso do class.forName porem não sei como implementa-lo.

Desde já agradeço.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags design-patterns java ou faça a sua própria pergunta.