Junior — Middle
Можеш ли да наведеш пример како реализовати принцип отворености/затворености из SOLID принципа у пракси развоја?
sobes.tech АИ
Одговор од АИ
Princip otvorenosti/zatvorenosti kaže da entiteti softvera treba da budu otvoreni za proširenje, ali zatvoreni za modifikaciju.
U razvoju za Android, ovo se može realizovati, na primer, korišćenjem apstrakcija i nasledjivanja. Umesto da menjamo postojeću klasu, kreiramo novu klasu koja proširuje funkcionalnost.
Primer:
// Osnovni interfejs
interface NotificationSender {
fun send(message: String)
}
// Implementacija za slanje putem Email-a
class EmailSender : NotificationSender {
override fun send(message: String) {
// logika slanja email-a
}
}
// Kasnije je potrebno dodati slanje SMS-a, ne menjajući EmailSender, već dodavanjem nove klase
class SmsSender : NotificationSender {
override fun send(message: String) {
// logika slanja SMS-a
}
}
// Upotreba
fun notifyUser(sender: NotificationSender, message: String) {
sender.send(message)
}
Na ovaj način, ako želimo da dodamo novi način slanja obaveštenja, proširujemo sistem kreiranjem novih klasa, bez izmene postojećeg koda.