Sobes.tech
Junior — Middle

Можете ли објаснити шта подразумева принцип инверзије зависности у објектно-оријентисаном програмирању?

sobes.tech АИ

Одговор од АИ

Princip inverzije zavisnosti (Dependency Inversion Principle, DIP) jedan je od pet SOLID principa u objektno-orijentisanom programiranju. On kaže:

  • Moduli visokog nivoa ne bi trebalo da zavise od modula niskog nivoa. Oba treba da zavise od apstrakcija.
  • Apstrakcije ne bi trebalo da zavise od detalja. Detalji treba da zavise od apstrakcija.

To znači da, umesto da klasa direktno kreira ili koristi konkretne implementacije drugih klasa, ona treba da radi sa apstrakcijama (npr. interfejsima ili protokolima). To povećava fleksibilnost i olakšava testiranje.

Primer u Swift-u (iOS):

protocol DataService {
    func fetchData() -> String
}

class APIService: DataService {
    func fetchData() -> String {
        return "Podaci sa API-ja"
    }
}

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()  // Ispis: Podaci sa API-ja

Ovde, ViewModel zavisi od apstrakcije DataService, a ne od konkretne implementacije APIService. To omogućava lako zamenjivanje implementacije servisa, na primer, sa mock-om za testiranje.