Sobes.tech
Junior — Middle

Czy mógłbyś wyjaśnić zalety i wady stosowania odwrócenia zależności w programowaniu?

sobes.tech AI

Odpowiedź od AI

Odwrócenie zależności (Dependency Inversion) to zasada, według której moduły wysokiego poziomu nie zależą od modułów niskiego poziomu, lecz oba zależą od abstrakcji.

Zalety:

  • Poprawia modularność i testowalność kodu, ponieważ zależności można łatwo wymieniać.
  • Zwiększa elastyczność i skalowalność aplikacji.
  • Zmniejsza powiązanie komponentów.

Wady:

  • Utrudnia architekturę, szczególnie w małych projektach.
  • Wymaga dodatkowego czasu na projektowanie abstrakcji.
  • Może prowadzić do nadmiaru interfejsów i klas.

Przykład w Swift:

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 getData() -> String {
        return service.fetchData()
    }
}

let apiService = APIService()
let viewModel = ViewModel(service: apiService)
print(viewModel.getData())

Tutaj ViewModel zależy od abstrakcji DataService, a nie od konkretnej implementacji APIService.