Sobes.tech
Junior — Middle

Czy możesz podać przykład, jak zrealizować zasadę otwartości/zamknięcia z zasad SOLID w praktyce programowania?

sobes.tech AI

Odpowiedź od AI

Zasada otwartości/zamknięcia mówi, że encje programowe powinny być otwarte na rozszerzenia, ale zamknięte na modyfikacje.

W rozwoju Androida można to zrealizować na przykład poprzez użycie abstrakcji i dziedziczenia. Zamiast modyfikować istniejącą klasę, tworzymy nową klasę, która rozszerza funkcjonalność.

Przykład:

// Podstawowy interfejs
interface NotificationSender {
    fun send(message: String)
}

// Implementacja do wysyłki email
class EmailSender : NotificationSender {
    override fun send(message: String) {
        // logika wysyłki email
    }
}

// Później trzeba dodać wysyłkę SMS, nie zmieniając EmailSender, a dodając nową klasę
class SmsSender : NotificationSender {
    override fun send(message: String) {
        // logika wysyłki SMS
    }
}

// Użycie
fun notifyUser(sender: NotificationSender, message: String) {
    sender.send(message)
}

W ten sposób, jeśli trzeba dodać nowy sposób wysyłania powiadomień, rozszerzamy system, tworząc nowe klasy, nie zmieniając istniejącego kodu.