Dans mon précédent article j’ai expliqué le deuxième principe SOLID (Ouvert-Fermé).
N’hésitez pas a découvrir les autres principes SOLID dans cette série d’articles:
Aujourd’hui je vous propose une explication pour le troisième principe S.O.L.I.D, c’est le principe «Substitution de Liskov» (Liskov Substitution), ce principe affirme que les classes dérivées doivent être substituables à leurs classes de base.
Je vous donne un mauvais exemple pour montrer la voilation du principe Substitution de Liskov:
public class Cat
{
public virtual string GetName()
{
return nameof(Cat);
}
public void Move()
{
// Some implementation heren
}
public void Eat()
{
// Some implementation heren
}
}
public class Dog : Cat
{
public override string GetName()
{
return nameof(Dog);
}
}
public static class Program
{
public static void Main()
{
Cat cat = new Dog();
cat.GetName();
}
}
Le code est incorrect car l’exécution de la méthode “cat.GetName ()” affichera “Dog” et non “Cat” comme prévu
public abstract class Animal
{
public abstract string GetName();
public virtual void Move()
{
// Some implementation here
}
public void Eat()
{
// Some implementation here
}
}
public sealed class Cat : Animal
{
public override string GetName()
{
return nameof(Cat);
}
}
public sealed class Dog : Animal
{
public override string GetName()
{
return nameof(Dog);
}
public override void Move()
{
// Some implementation here
}
}
public static class Program
{
public static void Main()
{
var animals = new List<Animal>
{
new Cat(),
new Dog()
};
foreach (var animal in animals)
{
animal.GetName();
animal.Move();
animal.Eat();
}
}
}
Le code est correct car les deux classes Cat et Dog peuvent être remplacées par la classe Animal sans avoir de comportements inattendus.
Si vous avez aimé cet article, n’hésitez pas à le partager ! n’hésitez pas à le partager !