Junior — Middle
Czy możesz podać przykład, jak zrealizować zasadę otwartości/zamknięcia z zasad SOLID w praktyce programowania?
sobes.tech AI
Odpowiedź od AI
Zasada otwartości/zamknięcia mówi, że encje programowe powinny być otwarte na rozszerzenia, ale zamknięte na modyfikacje.
W rozwoju Androida można to zrealizować na przykład poprzez użycie abstrakcji i dziedziczenia. Zamiast modyfikować istniejącą klasę, tworzymy nową klasę, która rozszerza funkcjonalność.
Przykład:
// Podstawowy interfejs
interface NotificationSender {
fun send(message: String)
}
// Implementacja do wysyłki email
class EmailSender : NotificationSender {
override fun send(message: String) {
// logika wysyłki email
}
}
// Później trzeba dodać wysyłkę SMS, nie zmieniając EmailSender, a dodając nową klasę
class SmsSender : NotificationSender {
override fun send(message: String) {
// logika wysyłki SMS
}
}
// Użycie
fun notifyUser(sender: NotificationSender, message: String) {
sender.send(message)
}
W ten sposób, jeśli trzeba dodać nowy sposób wysyłania powiadomień, rozszerzamy system, tworząc nowe klasy, nie zmieniając istniejącego kodu.