Junior — Middle
Dasturlash amaliyotida SOLID prinsiplari ichida ochilish/yopilish tamoyilini qanday amalga oshirish mumkinligini misol bilan keltira olasizmi?
sobes.tech AI
AIdan javob
Dasturiy ob'ektlar uchun ochiq/ yopiq tamoyili, ularning kengaytirishga ochiq, lekin o'zgartirishga yopiq bo'lishi kerakligini aytadi.
Android dasturlashda, bu, masalan, abstraktsiyalar va meros olish orqali amalga oshirilishi mumkin. Mavjud sinfni o'zgartirish o'rniga, funksionallikni kengaytiradigan yangi sinf yaratamiz.
Misol:
// Asosiy interfeys
interface NotificationSender {
fun send(message: String)
}
// Email orqali yuborish uchun amalga oshirish
class EmailSender : NotificationSender {
override fun send(message: String) {
// email yuborish logikasi
}
}
// Keyinchalik, SMS yuborishni qo'shish kerak, EmailSender ni o'zgartirmasdan, yangi sinf qo'shamiz
class SmsSender : NotificationSender {
override fun send(message: String) {
// SMS yuborish logikasi
}
}
// Foydalanish
fun notifyUser(sender: NotificationSender, message: String) {
sender.send(message)
}
Shu tarzda, agar yangi bildirishnoma yuborish usulini qo'shish kerak bo'lsa, tizimni yangi sinflar yaratib kengaytiramiz, mavjud kodni o'zgartirmasdan.