Princípio de substituição de Liskov em 3 minutos

O princípio da substituição grande de iskov é o design orientado a objetos de tamanho grande em ID grande. Apesar de ter um dos nomes mais assustadores nesses cinco princípios, é realmente muito fácil entender a sua cabeça.

De fato, é tão simples que você aprenderá sobre isso em cerca de 3 minutos.

O que é isso?

Em termos simples, o LSP aponta que objetos da mesma superclasse devem poder trocar entre si sem destruir nenhum objeto.

Se temos um gato e um cachorro derivados de uma classe animal, o uso de classes animais deve ser capaz de usar gatos ou cães e comportar-se normalmente.

Vamos fazer um exemplo!

Mesmo que essa definição não a explique bem, vamos colocá-la em prática. O código deixará tudo claro.

De uma maneira real OOP, vamos categoria super animal, há também uma subclasse de cachorro e gato e captura seus tipos favoritos de comida.

public static class Animal {
  public String favoriteFood;
  public Animal(String favoriteFood) {
    this.favoriteFood = favoriteFood;
  }
}

public static class Dog extends Animal {
  public Dog(String favoriteFood) {
    super(favoriteFood);
  }
}

public static class Cat extends Animal {
  public Cat(String favoriteFood) {
    super(favoriteFood);
  }
}

Agora, queremos dar um jeito de dar alguns lanches a esses cabeleireiros. Não quero colocar esse método na classe dos animais, porque é minha alimentação dos animais, não um comportamento intrínseco aos animais. Então, eu gosto de algo como a alimentação de cães pode entender isso, mas acho que alimentar cães é melhor, não é?

Vamos criar esse método e chamá-lo de GiveTreatTo:

public static void GiveTreatTo(Animal animal) {
  String msg = "You fed the " + animal.getClass().getSimpleName() + " some "  + animal.favoriteFood;
  System.out.println(msg);
}

Veja aqui que o GiveTreatTo requer qualquer animal como parâmetro. Como nossos construtores de animais distribuíram seus alimentos favoritos, quase sempre podemos confiar nos dados de lá.

Isso significa que não precisamos estabelecer um método para cada animal, ou seja, GiveTreatToDog e GiveTreatToCat. Como implementamos o LSP, existe apenas uma maneira. Vamos dar uma olhada no que ele faz:

public static void main(String[] args) {
  Dog rover = new Dog("bacon");
  Cat bingo = new Cat("fish");

  GiveTreatTo(rover);
  GiveTreatTo(bingo);
}

Agora, se implementarmos o LSP corretamente, o programa deverá ser executado normalmente. Vamos verificar a saída:

You gave the Dog some bacon
You gave the Cat some fish

Incrível. Outro benefício desse assunto é que podemos adicionar mais e mais animais e o método GiveTreatTo não requer nenhuma modificação.

Embrulhar

Muito assustador? Como muitas outras coisas em programação e ciência da computação, o nome oculta sua simplicidade. Agora, vá lá e torne suas subclasses intercambiáveis ​​e agradeça à Dra. Barbara Liskov por seus princípios úteis.

from: https://dev.to//erikwhiting88/liskov-substitution-principle-in-3-minutes-2dc6

Publicado 0 artigos originais · gostei 0 · visitas 642

Acho que você gosta

Origin blog.csdn.net/cunxiedian8614/article/details/105691162
Recomendado
Clasificación