Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Dúvida de Implementação - SOLID Aula 2 - Exercício 1.

Olá amigos, tudo bem?

Na resolução do exercício de acoplamento, no curso SOLID aula 2, eu implementei o imposto da seguinte forma:

namespace Acoplamento
{
    public interface IImposto
    {
        double Calcula(double valor);
    }
}
namespace Acoplamento
{
    public class ImpostoSimples : IImposto
    {
        public double Calcula(double valor)
        {
            return valor * 0.06;
        }
    }
}
namespace Acoplamento
{
    public class NotaFiscal
    {
        public double ValorBruto { get; private set; }
        private IImposto imposto;
        public double ValorLiquido
        {
            get
            {
                return ValorBruto - this.CalculaImposto();
            }
        }

        public NotaFiscal(double valorBruto, IImposto imposto)
        {
            this.ValorBruto = valorBruto;
            this.imposto = imposto;
        }

        public double CalculaImposto()
        {
            return this.imposto.Calcula(ValorBruto);
        }
    }
}

Como podem ver, eu passei a responsabilidade do cálculo de imposto para a classe NotaFiscal e caso for necessário ter esse cálculo, há um método que retorna o imposto calculado e coloquei o set do valor líquido que chama este mesmo método e subtraí o resultado do valor bruto.

Essa é uma boa implementação?

1 resposta
solução

Olá, Silvio.

Delegar métodos é sim uma boa prática, pois desta forma se a forma do imposto "se calcular" for alterada, sua Nota Fiscal não precisará ser alterada.

Abraços e bons estudos!