Sobes.tech
Junior — Middle

Môžeš uviesť príklad, ako implementovať princíp otvorenosti/zatvorenosti z princípov SOLID v praxi vývoja?

sobes.tech AI

Odpoveď od AI

Princíp otvorenosti/zatvorenosti hovorí, že softvérové entity by mali byť otvorené na rozšírenie, ale zatvorené na modifikáciu.

V Android vývoji je to možné realizovať napríklad pomocou abstrakcií a dedičnosti. Namiesto zmeny existujúcej triedy vytvoríme novú triedu, ktorá rozširuje funkcionalitu.

Príklad:

// Základné rozhranie
interface NotificationSender {
    fun send(message: String)
}

// Implementácia pre odosielanie cez Email
class EmailSender : NotificationSender {
    override fun send(message: String) {
        // logika odosielania emailu
    }
}

// Neskôr je potrebné pridať odosielanie SMS, bez zmeny EmailSender, pridáme novú triedu
class SmsSender : NotificationSender {
    override fun send(message: String) {
        // logika odosielania SMS
    }
}

// Použitie
fun notifyUser(sender: NotificationSender, message: String) {
    sender.send(message)
}

Týmto spôsobom, ak je potrebné pridať nový spôsob odosielania oznámení, systém rozšírime vytvorením nových tried, bez zmeny existujúceho kódu.