Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot SOLID principa L un tā nozīmi programmatūras projektēšanā?

sobes.tech AI

Atbilde no AI

SOLID principa L ir ir Liskova aizvietošanas princips (Liskov Substitution Principle, LSP). Tas nosaka, ka apakšklases objektiem jābūt aizvietojamiem ar pamata klases objektiem bez programmas korektuma pārtraukšanas.

Vienkārši sakot, ja klase B manto no klases A, tad jebkur, kur tiek izmantots A objekts, to var aizstāt ar B objektu, un programma jādarbojas pareizi, nemainot savu uzvedību.

Projektēšanas vērtība:

  • Nodrošina pareizu mantošanu un polimorfismu.
  • Palīdz izvairīties no negaidītām kļūdām funkcionalitātes paplašināšanā.
  • Veicina elastīgu un paplašināmu arhitektūru izveidi.

Piemērs C++:

class Bird {
public:
    virtual void fly() {
        // lidojuma īstenošana
    }
};

class Sparrow : public Bird {
    // zvirbulis var lidot, viss kārtībā
};

class Ostrich : public Bird {
public:
    void fly() override {
        throw std::logic_error("Ostrich nevar lidot");
    }
};

Šeit Ostrich pārkāpj LSP, jo apakšklase neatbalsta pamata klases uzvedību. Labāk ir projektēt hierarhiju citādi, piemēram, atdalot interfeisu lidojošiem putniem.