Junior — Middle
Tudsz példát mondani arra, hogyan valósítsd meg a nyitvatartás/zárás elvét a SOLID elvek gyakorlati alkalmazásában?
sobes.tech MI
Válasz az MI-től
A nyitott/zárt elv szerint a szoftver entitásoknak nyitottnak kell lenniük a bővítésre, de zártnak a módosításra.
Android fejlesztésben ezt például absztrakciók és öröklődés használatával lehet megvalósítani. Ahelyett, hogy meglévő osztályt módosítanánk, létrehozunk egy új osztályt, amely kibővíti a funkcionalitást.
Példa:
// Alap interfész
interface NotificationSender {
fun send(message: String)
}
// Email küldéshez implementáció
class EmailSender : NotificationSender {
override fun send(message: String) {
// email küldési logika
}
}
// Később, SMS küldést kell hozzáadni, anélkül, hogy módosítanánk az EmailSender-t, új osztályt adunk hozzá
class SmsSender : NotificationSender {
override fun send(message: String) {
// SMS küldési logika
}
}
// Használat
fun notifyUser(sender: NotificationSender, message: String) {
sender.send(message)
}
Így, ha új értesítési küldési módot szeretnénk hozzáadni, a rendszert új osztályok létrehozásával bővítjük, anélkül, hogy a meglévő kódot módosítanánk.