Princípios SOLID Desmistificados — (L)

Apr 17 2023
Princípio da Substituição de Liskov
As classes pai devem ser substituíveis por suas classes filhas com facilidade, ou seja, se a classe Rectangle for um subtipo da classe Shape, devemos ser capazes de substituir Shape por Rectangle sem interromper o fluxo funcional. Cenário de amostra Considere um aplicativo que possui uma classe base Animal que possui muitas subclasses como Dog, Cat e etc.

As classes pai devem ser substituíveis por suas classes filhas com facilidade, ou seja, se a classe Rectangle for um subtipo da classe Shape, devemos ser capazes de substituir Shape por Rectangle sem interromper o fluxo funcional.

Cenário de amostra

Considere um aplicativo que tenha uma classe base Animal que tenha muitas subclasses como Dog , Cat e etc. Cada subclasse deve ser substituível pela classe base Animal .

A classe Snail é uma subclasse que não pode implementar todos os métodos da classe base Animal , de modo que, se for substituída pela classe base, interromperá o fluxo funcional do aplicativo.

Todas as subclasses são substituíveis pela base Animal, exceto a classe Snail, portanto, isso viola o Princípio de Substituição de Liskov.

O objetivo desse princípio é basicamente impedir que nosso código seja interrompido devido a novas funcionalidades. Isso também está de acordo com nossos dois primeiros princípios, Responsabilidade Única e Princípio Aberto e Fechado .

Principais benefícios

  1. Pode usar a subclasse de uma classe pai da mesma forma que usa a classe pai sem quebrar nada.
  2. As subclasses podem modificar/sobrescrever os métodos da classe pai.
  3. As subclasses não podem definir uma nova função não presente na classe pai.