Sobes.tech
Назад к вопросам
Junior — Middle
81

Можешь привести пример, как реализовать принцип открытости/закрытости из принципов SOLID в практике разработки?

Компании, где спрашивали
Dogma

Ответ от нейросети

sobes.tech AI

Принцип открытости/закрытости (Open/Closed Principle) говорит, что программные сущности должны быть открыты для расширения, но закрыты для модификации.

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

Таким образом, если нужно добавить новый способ отправки уведомлений, мы расширяем систему, создавая новые классы, не меняя существующий код.