2
respostas

Aula 1: Service, Entity ou Util?

Para as classes ICMS e ISS, geradas na aula 1: seria mais adequado inserir no pacote de serviços, entidades de modelo, classes utilitárias ou outro?

Outra dúvida: seria uma má prática criá-las em um Enum? Por exemplo:

public interface CalculoImposto {
    double calcula(Orcamento orcamento);
}

public enum ImpostoEnum {

    ISS( calculoISS() ), 
    ICMS( calculoICMS() );

    private CalculoImposto calculo;

    public ImpostoEnum(CalculoImposto calculo){
        this.calculo = calculo;
    }

    public CalculoImposto getCalculo(){
        return this.calculo;
    }

    private static CalculoImposto calculoISS() {
        return new Imposto() {
            public double calcula(Orcamento orcamento) {
                return orcamento.getValor() * 0.06;
            }
        }
    }

    private static CalculoImposto calculoICMS() {
        return new Imposto() {
            public double calcula(Orcamento orcamento) {
                return orcamento.getValor() * 0.05 + 50;
            }
        }
    }

}

public class Teste {

    public static void main (String[] args) {
        CalculoImposto calculoISS = ImpostoEnum.ISS.getCalculo();
        CalculoImposto calculoICMS = ImpostoEnum.ICMS.getCalculo();

        Orcamento orcamento = new Orcamento(500.0);

        CalculadorDeImposto calculador = new CalculadorDeImposto();

        calculador.realizaCalculo(orcamento, calculoISS);
        calculador.realizaCalculo(orcamento, calculoICMS);
    }

}
2 respostas

Oi Victor, acho que faz sentido ficar no pacote de modelo, já que faz parte do domínio da sua aplicação. Em relação a sua enum, eu acho que é melhor ficar em classes diferentes. Mais fácil de ler :).

Como as classes fazem parte do domínio do seu sistema, faz total sentido ficarem no pacote de modelo, caso seja arquitetura MVC, por exemplo. O uso do Enum está só criando uma complexidade a mais para resolver a mesma coisa, penso eu.