Sobes.tech
Junior — Middle

El tudná magyarázni, hogy mit értünk az függőségfordítás elvén az objektumorientált programozásban?

sobes.tech MI

Válasz az MI-től

A Függőségek Fordított Elve (Dependency Inversion Principle, DIP) az objektumorientált programozás öt SOLID alapelve közé tartozik. Azt mondja:

  • A magas szintű moduloknak nem szabad alacsony szintű moduloktól függniük. Mindkettőnek az absztrakcióktól kell függnie.
  • Az absztrakciók nem szabad, hogy a részletektől függjenek. A részleteknek az absztrakcióktól kell függniük.

Ez azt jelenti, hogy egy osztálynak nem szabad közvetlenül más osztályok konkrét megvalósításait létrehoznia vagy használni, hanem absztrakciókkal (például interfészekkel vagy protokollokkal) kell dolgoznia. Ez növeli a rugalmasságot és megkönnyíti a tesztelést.

Példa Swiftben (iOS):

protocol DataService {
    func fetchData() -> String
}

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

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()  // Kimenet: API adatok

Itt a ViewModel az DataService absztrakciótól függ, nem pedig a konkrét APIService-től. Ez lehetővé teszi, hogy könnyen cseréljük a szolgáltatás implementációját, például egy mock-ra tesztekhez.