Sobes.tech
Junior — Middle

SOLID принциптеринен ачылыш/жабуу принцибин иш жүзүндө кантип ишке ашырууга болот деген мисал келтире аласызбы?

sobes.tech AI

AIден жооп

Ачык/жабык принципи боюнча, программалык түзүмдөр кеңейтүүгө ачык, бирок өзгөртүүгө жабык болушу керек.

Android өнүктүрүүдө, бул, мисалы, абстракциялар жана мурас аркылуу ишке ашырылышы мүмкүн. Бардык классты өзгөртүүнүн ордуна, функционалдуулугун кеңейтүүчү жаңы класс түзөбүз.

Мисал:

// Негизги интерфейс
interface NotificationSender {
    fun send(message: String)
}

// Email аркылуу жөнөтүү үчүн ишке ашыруу
class EmailSender : NotificationSender {
    override fun send(message: String) {
        // email жөнөтүү логикасы
    }
}

// Кийинчерээк, SMS жөнөтүүнү кошуу керек, EmailSender'ды өзгөртпөстөн, жаңы класс кошобуз
class SmsSender : NotificationSender {
    override fun send(message: String) {
        // SMS жөнөтүү логикасы
    }
}

// Колдонуу
fun notifyUser(sender: NotificationSender, message: String) {
    sender.send(message)
}

Мындайча айтканда, эгер биз жаңы билдирүү жөнөтүү ыкмасын кошкуңуз келсе, системаны жаңы класстарды түзүү аркылуу кеңейтесиз, бар кодуңузду өзгөртпөстөн.