Sobes.tech
Junior — Middle

Podes dar um exemplo de como implementar o princípio de abertura/fechamento dos princípios SOLID na prática do desenvolvimento?

sobes.tech IA

Resposta da IA

O Princípio Aberto/Fechado afirma que as entidades de software devem estar abertas para extensão, mas fechadas para modificação.

No desenvolvimento Android, isso pode ser implementado, por exemplo, através do uso de abstrações e herança. Em vez de modificar uma classe existente, criamos uma nova classe que estende a funcionalidade.

Exemplo:

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

// Implementação para envio por Email
class EmailSender : NotificationSender {
    override fun send(message: String) {
        // lógica de envio de email
    }
}

// Mais tarde, é necessário adicionar envio de SMS, sem alterar EmailSender, mas adicionando uma nova classe
class SmsSender : NotificationSender {
    override fun send(message: String) {
        // lógica de envio de SMS
    }
}

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

Dessa forma, se precisar adicionar uma nova forma de envio de notificações, ampliamos o sistema criando novas classes, sem alterar o código existente.