Junior — Middle
Можеш ли да дадеш пример как да реализираш принципа на отвореност/затвореност от принципите SOLID в практиката на разработката?
sobes.tech AI
Отговор от AI
Принципът на отвореност/затвореност казва, че софтуерните същности трябва да бъдат отворени за разширяване, но затворени за модификация.
В разработката за Android това може да бъде реализирано, например, чрез използване на абстракции и наследяване. Вместо да променяме съществуващ клас, създаваме нов клас, който разширява функционалността.
Пример:
// Базов интерфейс
interface NotificationSender {
fun send(message: String)
}
// Реализация за изпращане по Email
class EmailSender : NotificationSender {
override fun send(message: String) {
// логика за изпращане на email
}
}
// По-късно трябва да добавим изпращане на SMS, без да променяме EmailSender, а добавяме нов клас
class SmsSender : NotificationSender {
override fun send(message: String) {
// логика за изпращане на SMS
}
}
// Използване
fun notifyUser(sender: NotificationSender, message: String) {
sender.send(message)
}
По този начин, ако трябва да добавим нов начин за изпращане на уведомления, разширяваме системата, като създаваме нови класове, без да променяме съществуващия код.