Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε τις διαφορές μεταξύ της αρχής της αντιστροφής των εξαρτήσεων και της έγχυσης εξαρτήσεων στον προγραμματισμό;

sobes.tech AI

Απάντηση από AI

Η αρχή της αντιστροφής των εξαρτήσεων (Dependency Inversion Principle, DIP) είναι μία από τις πέντε αρχές SOLID, που δηλώνει ότι τα modules υψηλού επιπέδου δεν πρέπει να εξαρτώνται άμεσα από τα modules χαμηλού επιπέδου, αλλά και τα δύο πρέπει να εξαρτώνται από αφαιρέσεις (π.χ., διεπαφές). Οι αφαιρέσεις δεν πρέπει να εξαρτώνται από λεπτομέρειες, αλλά οι λεπτομέρειες πρέπει να εξαρτώνται από τις αφαιρέσεις. Αυτό βοηθά στη δημιουργία πιο ευέλικτης και εύκολα επεκτάσιμης αρχιτεκτονικής.

Η εισαγωγή εξαρτήσεων (Dependency Injection, DI) είναι ένα συγκεκριμένο μοτίβο ή τεχνική που υλοποιεί την αρχή της αντιστροφής των εξαρτήσεων. Το DI σημαίνει ότι οι εξαρτήσεις ενός αντικειμένου περνάνε από έξω (π.χ., μέσω του κατασκευαστή, ενός setter ή μιας μεθόδου), αντί να δημιουργούνται μέσα στο αντικείμενο. Αυτό διευκολύνει τις δοκιμές και την αντικατάσταση συστατικών.

Με άλλα λόγια:

  • DIP είναι ένας κανόνας ή αρχή σχεδιασμού.
  • DI είναι ένας τρόπος υλοποίησης αυτής της αρχής στην πράξη.

Παράδειγμα σε Swift:

protocol NetworkService {
    func fetchData()
}

class APIService: NetworkService {
    func fetchData() {
        print("Λήψη δεδομένων από το API")
    }
}

class ViewModel {
    let networkService: NetworkService

    // Εισαγωγή εξαρτήσεων μέσω του κατασκευαστή
    init(networkService: NetworkService) {
        self.networkService = networkService
    }

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

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