1
resposta

[Dúvida] Violação do principio SOLID

Boa tarde !

Notei que na implementação da classe SemDesconto, obrigatoriamente, implementamos a proprieda Proximo, mas não usamos, isso viola um principio I - Interface Segregation Principle do SOLID, estou correto ? Qual séria a solução para esse problema da SOLID, a implementação de uma nova interface generica para o IDescontoProximo e IDesconto ?

1 resposta

Renan,

Desculpe, não sei se entendi bem...

A classe "SemDesconto" herda de "IDesconto", então ela é obrigada a implementar tudo que a interface exige.

public interface IDesconto 
{
    double Desconta(Orcamento orcamento);
    Desconto Proximo { get; set; }
}
public class SemDesconto : IDesconto 
{
    public Desconto Proximo { get; set; }

    public Double Desconta(Orcamento orcamento) 
    {
        return 0;
    }
}

Okay... mas o que diz o sagrado princípio "I" — Interface Segregation Principle (Princípio da Segregação da Interface)

===============================================================

O corolário do Interface Segregation Principle é:

Nenhum cliente deveria ser forçado a depender de métodos que ele não usa

https://www.blogdoft.com.br/2020/02/23/solid-de-verdade-interface-segregation-principle-isp/

===============================================================

OKay, mas se ela ASSINOU um contrato, precisa CUMPRIR esse contrato, não é como se fosse um "assinei sem ler" de um certo presidente molusco mafioso assassino ladrão bêbado mijado zoófilo de 9 dedos... entende o problema?

E NÃO teria como fazer a classe "SemDesconto" NÃO assinar a interface "IDesconto"...

... ficamos em um beco sem saída, que é muito parecido com a situação econômica e política brasileira nos dias de hoje.

Com corda ou sem corda?

[]'s,

Fabio I.