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