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.