Sobes.tech
Junior — Middle

Können Sie erklären, was unter dem Prinzip der Dependency Inversion in der objektorientierten Programmierung verstanden wird?

sobes.tech KI

Antwort von AI

Das Prinzip der Dependency Inversion (Dependency Inversion Principle, DIP) ist eines der fünf SOLID-Prinzipien in der objektorientierten Programmierung. Es besagt:

  • Hochrangige Module sollten nicht von niederrangigen Modulen abhängen. Beide sollten von Abstraktionen abhängen.
  • Abstraktionen sollten nicht von Details abhängen. Details sollten von Abstraktionen abhängen.

Das bedeutet, dass eine Klasse nicht direkt konkrete Implementierungen anderer Klassen erstellen oder verwenden sollte, sondern mit Abstraktionen (z.B. Schnittstellen oder Protokollen) arbeiten sollte. Dies erhöht die Flexibilität und erleichtert das Testen.

Beispiel in Swift (iOS):

protocol DataService {
    func fetchData() -> String
}

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

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()  // Gibt aus: Daten von der API

Hier hängt ViewModel von der Abstraktion DataService ab und nicht von der konkreten Implementierung APIService. Das ermöglicht es, die Service-Implementierung leicht zu ersetzen, z.B. durch einen Mock für Tests.