Sobes.tech
Junior — Middle

Puoi fare un esempio di come implementare il principio di apertura/chiusura dei principi SOLID nella pratica dello sviluppo?

sobes.tech AI

Risposta dell'AI

Il Principio di apertura/chiusura afferma che le entità software dovrebbero essere aperte all'estensione, ma chiuse alla modifica.

Nello sviluppo Android, questo può essere implementato, ad esempio, attraverso l'uso di astrazioni e ereditarietà. Invece di modificare una classe esistente, creiamo una nuova classe che estende la funzionalità.

Esempio:

// Interfaccia di base
interface NotificationSender {
    fun send(message: String)
}

// Implementazione per l'invio via Email
class EmailSender : NotificationSender {
    override fun send(message: String) {
        // logica di invio email
    }
}

// Più tardi, bisogna aggiungere l'invio di SMS, senza modificare EmailSender, ma aggiungendo una nuova classe
class SmsSender : NotificationSender {
    override fun send(message: String) {
        // logica di invio SMS
    }
}

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

In questo modo, se si desidera aggiungere un nuovo metodo di invio notifiche, si amplia il sistema creando nuove classi, senza modificare il codice esistente.