Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Estou com dúvida no curso de Design Patterns para bons programadores, no exercício do capítulo A grande variedade de impostos e o padrão Strategy.

Hoje encontrei um codigo aqui no meu projeto da empresa que se enquadra perfeitamente nesse contexto, porem, estou com algumas duvidas. Eu tenho um metodo que recebe um enum, por exemplo ModalidadeEnum. Nesse enum eu tenho as constantes ModalidadeEnum.FUTURO, ModalidadeEnum.DERIVADO etc. Este metodo que recebe a enum como parametro utiliza para saber qual é o tipo da modalidade e com base nesse tipo é executado um metodo de busca na base de dados. Ex:

public List<?> calculaModalidade(Modalidade modalidade) {
        if (modalidade.equals(Modalidade.FUTURO)) {
            return consulta1();
        }
        if (modalidade.equals(Modalidade.DERIVADO)) {
            return consulta2();
        }
        return consulta3();
    }

Como poderia ser aplicado nesse contexto?

1 resposta
solução!

Parece-me que o problema poderia ser dividido em 2: o primeiro, seria descobrir definir uma estratégia para cada consulta; o segundo, descobrir qual estratégia é a mais adequada. O ideal é que o enum já devolvesse a estratégia mais adequada. Mas isso nem sempre é possível, pois acabaria poluindo o enum, em alguns casos. Então, poderia ser usado um Chain of Responsability para decidir qual estratégia usar. Ajudei?