Sobes.tech
Junior — Middle

Μπορείς να δείξεις πώς εφαρμόζεται η αρχή L από το SOLID στην πρακτική ανάπτυξης;

sobes.tech AI

Απάντηση από AI

Ο αρχή L του SOLID είναι η αρχή αντικατάστασης του Λίσκοφ. Λέει ότι τα αντικείμενα των υποκατηγοριών πρέπει να είναι εναλλάξιμα με τα αντικείμενα της βασικής κλάσης χωρίς να παραβιάζουν την ορθότητα του προγράμματος.

Παράδειγμα σε Kotlin:

open class Bird {
    open fun fly() {
        println("Το πουλί πετάει")
    }
}

class Sparrow : Bird() {
    override fun fly() {
        println("Το σπουργίτι πετάει")
    }
}

class Ostrich : Bird() {
    override fun fly() {
        throw UnsupportedOperationException("Ο στρουθοκάμηλος δεν μπορεί να πετάξει")
    }
}

fun makeBirdFly(bird: Bird) {
    bird.fly()
}

fun main() {
    val sparrow = Sparrow()
    val ostrich = Ostrich()

    makeBirdFly(sparrow)  // Λειτουργεί σωστά
    makeBirdFly(ostrich)  // Παραβίαση της αρχής L, καθώς ο στρουθοκάμηλος δεν μπορεί να πετάξει
}

Σε αυτό το παράδειγμα, η κλάση Ostrich παραβιάζει την αρχή L, καθώς δεν υποστηρίζει τη συμπεριφορά της βασικής κλάσης Bird. Για να τηρηθεί η αρχή, πρέπει να σχεδιαστεί η ιεραρχία έτσι ώστε οι υποκλάσεις να υποστηρίζουν πλήρως το συμβόλαιο της βασικής κλάσης, για παράδειγμα, διαχωρίζοντας τα πουλιά που πετούν και αυτά που δεν πετούν σε διαφορετικές ιεραρχίες.