Sobes.tech
Junior — Middle

Poți oferi un exemplu de cum să implementezi principiul de deschidere/închidere din principiile SOLID în practica dezvoltării?

sobes.tech AI

Răspuns de la AI

Principiul deschiderii/închiderii afirmă că entitățile software trebuie să fie deschise pentru extindere, dar închise pentru modificare.

În dezvoltarea Android, acest lucru poate fi realizat, de exemplu, prin utilizarea abstracțiilor și moștenirii. În loc să modificăm o clasă existentă, creăm o clasă nouă care extinde funcționalitatea.

Exemplu:

// Interfață de bază
interface NotificationSender {
    fun send(message: String)
}

// Implementare pentru trimiterea prin Email
class EmailSender : NotificationSender {
    override fun send(message: String) {
        // logica de trimitere email
    }
}

// Mai târziu, trebuie să adăugăm trimiterea SMS, fără a modifica EmailSender, ci adăugând o clasă nouă
class SmsSender : NotificationSender {
    override fun send(message: String) {
        // logica de trimitere SMS
    }
}

// Utilizare
fun notifyUser(sender: NotificationSender, message: String) {
    sender.send(message)
}

Astfel, dacă trebuie să adăugați o nouă metodă de trimitere a notificărilor, extindeți sistemul creând noi clase, fără a modifica codul existent.