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, καθώς η υποκλάση δεν υποστηρίζει τη συμπεριφορά της βασικής κλάσης. Είναι καλύτερο να σχεδιάσετε διαφορετικά την ιεραρχία, π.χ., ορίζοντας μια διεπαφή για τα πουλιά που πετούν.