Sobes.tech
Junior — Middle

Можете ли да обясните принципа L от SOLID и неговото значение при проектирането на код?

sobes.tech AI

Отговор от AI

Принципът L от SOLID е Принципът на подмяна на Лисков (Liskov Substitution Principle, LSP). Той гласи, че обектите на подклас трябва да могат да бъдат взаимозаменяеми с тези на базовия клас без да нарушават коректността на програмата.

По-просто казано, ако класът B наследява от клас A, навсякъде, където се използва обект A, може да бъде заменен с обект B, и програмата трябва да работи правилно, без да променя поведението си.

Значение при проектирането:

  • Осигурява правилно наследяване и полиморфизъм.
  • Помага да се избегнат неочаквани грешки при разширяване на функционалността.
  • Спомага за създаването на гъвкави и разширяеми архитектури.

Пример на C++:

class Bird {
public:
    virtual void fly() {
        // реализация на летене
    }
};

class Sparrow : public Bird {
    // синигерът може да лети, всичко е наред
};

class Ostrich : public Bird {
public:
    void fly() override {
        throw std::logic_error("Щраусът не може да лети");
    }
};

Тук Ostrich нарушава принципа LSP, тъй като подкласът не поддържа поведението на базовия клас. По-добре е да се проектира йерархията по друг начин, например да се отдели интерфейс за летящи птици.