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?