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)
}

По този начин, ако трябва да добавим нов начин за изпращане на уведомления, разширяваме системата, като създаваме нови класове, без да променяме съществуващия код.