Sobes.tech
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.