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) {
        // էլփոստ ուղարկելու տրամաբանություն
    }
}

// Հետագայում անհրաժեշտ է ավելացնել SMS ուղարկում, առանց EmailSender- ի փոփոխության, ավելացնում ենք նոր դաս
class SmsSender : NotificationSender {
    override fun send(message: String) {
        // SMS ուղարկելու տրամաբանություն
    }
}

// Օգտագործում
fun notifyUser(sender: NotificationSender, message: String) {
    sender.send(message)
}

Այսպիսով, եթե ուզում ենք ավելացնել նոր ծանուցման ուղարկման միջոց, մենք ընդլայնում ենք համակարգը նոր դասեր ստեղծելով, առանց փոփոխելու առկա կոդը։