Sobes.tech
Junior — Middle

Kas saaksite selgitada, mida mõistetakse sõltuvuste pööramise printsiibina objektorienteeritud programmeerimises?

sobes.tech AI

Vastus AI-lt

Sõltuvuste pööramise põhimõte (Dependency Inversion Principle, DIP) on üks viiest SOLID põhimõttest objektorienteeritud programmeerimises. See ütleb:

  • Kõrgema taseme moodulid ei tohi sõltuda madalama taseme moodulitest. Mõlemad peaksid sõltuma abstraktsioonidest.
  • Abstraktsioonid ei tohi sõltuda üksikdetailidest. Detailid peavad sõltuma abstraktsioonidest.

See tähendab, et klass ei tohiks otse luua ega kasutada teiste klasside konkreetseid rakendusi, vaid peaks töötama abstraktsioonidega (näiteks liideste või protokollidega). See suurendab paindlikkust ja lihtsustab testimist.

Näide Swiftis (iOS):

protocol DataService {
    func fetchData() -> String
}

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

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()  // Väljund: API andmed

Siin sõltub ViewModel abstraktsioonist DataService, mitte konkreetse APIService rakendusest. See võimaldab hõlpsasti asendada teenuse rakendust, näiteks mock-iga testimiseks.