Sobes.tech
Junior — Middle

Můžeš uvést příklad, jak implementovat princip otevřenosti/zavřenosti z principů SOLID v praxi vývoje?

sobes.tech AI

Odpověď od AI

Princip otevřenosti/zavřenosti říká, že softwarové entity by měly být otevřené pro rozšíření, ale uzavřené pro modifikaci.

V Android vývoji lze toto například realizovat pomocí abstrakcí a dědičnosti. Místo změny stávající třídy vytvoříme novou třídu, která rozšiřuje funkčnost.

Příklad:

// Základní rozhraní
interface NotificationSender {
    fun send(message: String)
}

// Implementace pro odeslání emailu
class EmailSender : NotificationSender {
    override fun send(message: String) {
        // logika odeslání emailu
    }
}

// Později je potřeba přidat odesílání SMS, aniž bychom měnili EmailSender, přidáme novou třídu
class SmsSender : NotificationSender {
    override fun send(message: String) {
        // logika odeslání SMS
    }
}

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

Tímto způsobem, pokud je potřeba přidat nový způsob odesílání oznámení, systém rozšíříme vytvořením nových tříd, aniž bychom měnili stávající kód.