Принципы в C# - часть 4. Принцип подстановки Лискова
Принцип замещения Лисков, созданный Барбарой Лисков и Жаннет Винг, гласит:
Вы должны иметь возможность использовать любой производный класс вместо родительского класса и вести себя таким же образом без изменений.
Другими словами, каждый производный класс должен поддерживать поведение родительского класса наряду с новым поведением, уникальным для дочернего класса. Создание новых классов, наследуемых от родительского класса, работает без каких-либо изменений в существующем коде.
static void Main()
{
Apple orange = new Orange();
Console.WriteLine(orange.GetColor());
// outputs: "Orange";
}
public class Apple
{
public string GetColor() => "Red";
}
public class Orange
{
public string GetColor() => "Orange";
}
Давайте реализуем принцип подстановки Лисков:
static void Main()
{
Fruit orange = new Orange();
Console.WriteLine(orange.GetColor());
// outputs: "Orange"
Fruit apple = new Apple();
Console.WriteLine(apple.GetColor());
// outputs: "Red"
Orange fruit = new Apple();
Console.WriteLine(fruit.GetColor());
// outputs: "Red"
}
public abstract class Fruit
{
public abstract string GetColor();
}
public class Apple: Fruit
{
public override string GetColor() => "Red";
}
public class Orange: Fruit
{
public override string GetColor() => "Orange";
}
Здесь замена Лискова удовлетворяется нашим кодом. Приложение не нужно изменять для поддержки нового Fruit, поскольку подтипы (Apple и Orange), которые унаследованы от типа Fruit, могут быть заменены друг другом без возникновения ошибок.
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.