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.