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