1
resposta

Diferença entre LSP e ISP

Olá, não consegui enxergar uma diferença clara entre o liskov substitution principle e o interface segregation principle. Qual a diferença entre os dois?

1 resposta

Olá Matheus, tudo bem?

LSP: Objetos de uma superclasse devem ser substituíveis por objetos de suas subclasses sem quebrar a aplicação. Este princípio pede que você certifique-se de que todas as classes filhas tenham o mesmo comportamento que a classe pai. Por exemplo: se você tem uma classe Device e tem uma função callFather() que obtém o número de telefone do seu pai, então o chama, então você deve ter certeza de que o método callFather() em todas as subclasses faz o mesmo trabalho. Se alguma das subclasses de Device tiver outro comportamento isso significa que você quebrou o LSP

ISP: Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações. Solicita que você crie uma interface diferente para diferentes responsabilidades, ou seja, não agrupe comportamentos não relacionados em uma interface, você quebra o ISP se já tiver uma interface com muitas responsabilidades e o implementador não precisa de todas essas coisas