Junior — Middle
Poți explica principiul L din SOLID și semnificația sa în proiectarea codului?
sobes.tech AI
Răspuns de la AI
Principiul L din SOLID este Principiul de Substituție a Liskov (Liskov Substitution Principle, LSP). Acesta afirmă că obiectele unei subclase trebuie să poată fi înlocuite cu cele ale clasei de bază fără a afecta corectitudinea programului.
Pe scurt, dacă clasa B moștenește de la clasa A, oriunde este utilizat un obiect A, acesta poate fi înlocuit cu un obiect B, iar programul trebuie să funcționeze corect, fără a-și schimba comportamentul.
Valoare în proiectare:
- Asigură o moștenire și un polimorfism corect.
- Ajută la evitarea erorilor neașteptate în extinderea funcționalității.
- Favorizează crearea de arhitecturi flexibile și extensibile.
Exemplu în C++:
class Bird {
public:
virtual void fly() {
// implementarea zborului
}
};
class Sparrow : public Bird {
// vrabia poate zbura, totul este în regulă
};
class Ostrich : public Bird {
public:
void fly() override {
throw std::logic_error("Struțul nu poate zbura");
}
};
Aici, Ostrich încalcă principiul LSP, deoarece subclasa nu suportă comportamentul clasei de bază. Este mai bine să proiectați ierarhia altfel, de exemplu, să definiți o interfață pentru păsările care zboară.