Aplicar valores por tipo de dado recebido

3 respostas Resolvido
ThiagoA

Olá pessoal!

Estou implementando um serviço onde terei de ‘setar’ os valores de acordo com os dados recebidos.
Fiz a tomada de decisão utilizando ‘ifs’ mas não achei muito eficiente e além do código ter ficado verboso demais.

Alguem conhece alguma maneira mais simples de fazer esta tomada de descição, que não
seja switch?

Exemplo:

public Venda mapper(DadosVenda dados) {

    Venda venda = new Venda();

    if (dados.getMetodo().equals(Metodo.CARTAO_CREDITO)) {
        venda.setMeioPagamento(Metodo.CARTAO_CREDITO);
        venda.setCartaoCredito(objectMapper.convertValue(dados.getDados(), CretaoCredito.class));

    } else if (dados.getMetodo().equals(Metodo.CARTAO_DEBITO)) {
        venda.setMeioPagamento(Metodo.CARTAO_DEBITO);
            venda.setCartaoDebito(objectMapper.convertValue(dados.getDados(), CretaoDebito.class));
     
    } else if (dados.getMetodo().equals(Metodo.BOLETO)) {
                venda.setMeioPagamento(Metodo.BOLETO);
                venda.setBoleto(objectMapper.convertValue(dados.getDados(), Boleto.class));
             }
    return venda;
}

3 Respostas

Marcus_Gp

Boa tarde,
dê uma pesquisada sobre Enum Strategy Pattern, talvez possa lhe ajudar a implementar esta funcionalidade sem usar esses métodos.

Weverton_Reis
Solucao aceita

Boa tarde ThiagoA,

Esse artigo pode te ajudar:

Espero que te ajude.

ThiagoA

Obrigado!!

Criado 3 de outubro de 2016
Ultima resposta 3 de out. de 2016
Respostas 3
Participantes 3