Junior — Middle
117
Можете ли објаснити принцип L из SOLID и његово значење у дизајну кода?
Компаније где су питане
РедСофт
Одговор од АИ
sobes.tech АИ
Princip L iz SOLID-a je Princip zamene Liskov (Liskov Substitution Principle, LSP). On kaže da objekti podklase treba da budu zamenjivi sa objektima osnovne klase bez narušavanja ispravnosti programa.
Jednostavno rečeno, ako klasa B nasleđuje klasu A, svuda gde se koristi objekat A, može se zameniti objektom B, i program treba da radi ispravno, bez promene svog ponašanja.
Vrednost pri projektovanju:
- Osigurava ispravno nasleđivanje i polimorfizam.
- Pomaže da se izbegnu neočekane greške pri proširenju funkcionalnosti.
- Podstiče kreiranje fleksibilnih i proširivih arhitektura.
Primer u C++:
class Bird {
public:
virtual void fly() {
// implementacija letenja
}
};
class Sparrow : public Bird {
// vrabac može da leti, sve u redu
};
class Ostrich : public Bird {
public:
void fly() override {
throw std::logic_error("Struja ne može da leti");
}
};
Ovde Ostrich krši LSP, jer podklasa ne podržava ponašanje osnovne klase. Bolje je dizajnirati hijerarhiju na drugi način, na primer, izdvojiti interfejs za ptice koje lete.