Sobes.tech
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ă.