Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Uso de ENUMS

Fugiria do Strategy o método do cálculo ser incluído no próprio ENUM, considerando que o ENUM seria uma instância única da respectiva classe?

Ex:

public enum TipoImposto implements Imposto {
    ICMS(new BigDecimal("0.1")),
    ISS(new BigDecimal("0.06"));

    private final BigDecimal aliquota;

    private TipoImposto(BigDecimal aliquota) {
        this.aliquota = aliquota
    }

    @Override
    public BigDecimal calcular(Orcamento orcamento) {
        return orcamento.getValor().multiply(this.aliquota);
    }
}

Suponha que a interface Imposto esteja corretamente implementada.

2 respostas
solução!

Oi Andre,

Também acaba sendo mais uma maneira de utilização do pattern strategy, embora confesse que nunca tinha visto um enum implementando uma interface(nem sabia que isso era possível :D )

Bons estudos!

Aprendi recentemente que é possível - e achei que pode ser interessante em alguns momentos ainda que me pareça um tento inútil.

Comecei a programar recentemente (a estudar programação a partir do zero em janeiro/2020 e a trabalhar na área em outubro/2020) e tive essa surpresa num projeto no qual fui alocado.

Obrigado! Como desfez o enum fiquei na dúvida se é porque irá desenvolver algo a mais durante o curso, o que faria o enum talvez não ser suficiente, ou se realmente quebraria o pattern. Agora estou esclarecido. Obrigado! =D