Junior — Middle
Czy możesz wyjaśnić, na czym polega zasada odwracania zależności w programowaniu obiektowym?
sobes.tech AI
Odpowiedź od AI
Zasada odwrócenia zależności (Dependency Inversion Principle, DIP) jest jednym z pięciu zasad SOLID w programowaniu obiektowym. Mówi ona:
- Moduły wysokiego poziomu nie powinny zależeć od modułów niskiego poziomu. Oba powinny zależeć od abstrakcji.
- Abstrakcje nie powinny zależeć od szczegółów. Szczegóły powinny zależeć od abstrakcji.
Oznacza to, że zamiast tworzyć lub bezpośrednio używać konkretnych implementacji innych klas, klasa powinna pracować z abstrakcjami (np. interfejsami lub protokołami). To zwiększa elastyczność i ułatwia testowanie.
Przykład w Swift (iOS):
protocol DataService {
func fetchData() -> String
}
class APIService: DataService {
func fetchData() -> String {
return "Dane z API"
}
}
class ViewModel {
private let service: DataService
init(service: DataService) {
self.service = service
}
func load() {
print(service.fetchData())
}
}
let apiService = APIService()
let viewModel = ViewModel(service: apiService)
viewModel.load() // Wypisze: Dane z API
Tutaj ViewModel zależy od abstrakcji DataService, a nie od konkretnej implementacji APIService. To pozwala na łatwą zamianę implementacji serwisu, np. na mock do testów.