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.