Sobes.tech
Junior — Middle

¿Puedes dar un ejemplo de cómo implementar el principio de apertura/cierre de los principios SOLID en la práctica del desarrollo?

sobes.tech AI

Respuesta de la IA

El principio de abierto/cerrado dice que las entidades de software deben estar abiertas para su extensión, pero cerradas para su modificación.

En el desarrollo de Android, esto se puede implementar, por ejemplo, mediante el uso de abstracciones y herencia. En lugar de modificar una clase existente, creamos una nueva clase que extiende la funcionalidad.

Ejemplo:

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

// Implementación para enviar por Email
class EmailSender : NotificationSender {
    override fun send(message: String) {
        // lógica de envío de email
    }
}

// Más tarde, se necesita agregar envío de SMS, sin cambiar EmailSender, sino añadiendo una nueva clase
class SmsSender : NotificationSender {
    override fun send(message: String) {
        // lógica de envío de SMS
    }
}

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

De esta manera, si se necesita agregar una nueva forma de enviar notificaciones, ampliamos el sistema creando nuevas clases, sin modificar el código existente.