Sobes.tech
Junior — Middle

შეგიძლიათ აჩვენოთ, როგორ გამოიყენება SOLID-ის L პრინციპი განვითარების პრაქტიკაში?

sobes.tech AI

პასუხი AI-სგან

SOLID-ի L սկզբունքը Լիսկովի փոխարինման սկզբունք է։ Այն ասում է, որ ենթասահմանների օբյեկտները պետք է փոխարինելի լինեն հիմնական դասի օբյեկտների հետ՝ առանց ծրագրի ճիշտությունը խախտելու։

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)  // Լիսկովի սկզբունքի խախտում, քանի որ օստրիչը չի կարող թռչել
}

Այս օրինակով, օստրիչը խախտում է Լիսկովի սկզբունքը, քանի որ չի աջակցում հիմնական դասի վարքագիծը։ Կարող եք նախագծել հիերարխիան այնպես, որ ենթասահմանները լիովին աջակցեն հիմնական դասի պայմանագրին, օրինակ՝ բաժանելով թռչող և չթռչող թռչունները տարբեր հիերարխիաներում։