Sobes.tech
Junior — Middle

Können Sie die Unterschiede zwischen dem Prinzip der Dependency Inversion und der Dependency Injection in der Programmierung erklären?

sobes.tech KI

Antwort von AI

Das Prinzip der Dependency Inversion (Dependency Inversion Principle, DIP) ist eines der fünf SOLID-Prinzipien, das besagt, dass Module auf höherer Ebene nicht direkt von Modulen auf niedriger Ebene abhängen sollten, sondern beide von Abstraktionen (z. B. Schnittstellen) abhängen sollten. Abstraktionen sollten nicht von Details abhängen, sondern Details sollten von Abstraktionen abhängen. Dies trägt dazu bei, die Architektur flexibler und leichter erweiterbar zu machen.

Dependency Injection (DI) ist ein konkretes Muster oder eine Technik, die das Prinzip der Dependency Inversion umsetzt. DI bedeutet, dass die Abhängigkeiten eines Objekts von außen (z. B. über den Konstruktor, einen Setter oder eine Methode) übergeben werden, anstatt innerhalb des Objekts erstellt zu werden. Dies erleichtert Tests und den Austausch von Komponenten.

Mit anderen Worten:

  • DIP ist eine Regel oder ein Designprinzip.
  • DI ist eine Methode, dieses Prinzip in der Praxis umzusetzen.

Beispiel in Swift:

protocol NetworkService {
    func fetchData()
}

class APIService: NetworkService {
    func fetchData() {
        print("Daten von API abrufen")
    }
}

class ViewModel {
    let networkService: NetworkService

    // Dependency Injection über den Konstruktor
    init(networkService: NetworkService) {
        self.networkService = networkService
    }

    func load() {
        networkService.fetchData()
    }
}

let apiService = APIService()
let viewModel = ViewModel(networkService: apiService)
viewModel.load()