Sobes.tech
Junior — Middle

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

sobes.tech AI

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

Αντιστροφή Εξαρτήσεων (Principle της Αντιστροφής των Εξαρτήσεων, DIP) — είναι μία από τις αρχές SOLID, που λέει ότι:

  • Οι modules υψηλού επιπέδου δεν πρέπει να εξαρτώνται από modules χαμηλού επιπέδου. Και τα δύο πρέπει να εξαρτώνται από αφαιρέσεις.
  • Οι αφαιρέσεις δεν πρέπει να εξαρτώνται από λεπτομέρειες. Οι λεπτομέρειες πρέπει να εξαρτώνται από αφαιρέσεις.

Αυτή είναι μια αρχή σχεδιασμού που στοχεύει στη μείωση της συσχέτισης και στην αύξηση της ευελιξίας του κώδικα.

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

Παράδειγμα:

protocol Service {
    func doSomething()
}

class RealService: Service {
    func doSomething() { print("Εργασία της υπηρεσίας") }
}

class Client {
    let service: Service

    // Εισαγωγή εξάρτησης μέσω του κατασκευαστή
    init(service: Service) {
        self.service = service
    }

    func execute() {
        service.doSomething()
    }
}

let service = RealService()
let client = Client(service: service)
client.execute()

Εδώ, το DIP είναι η ιδέα ότι το Client εξαρτάται από την αφαιρεση Service, και όχι από την συγκεκριμένη υλοποίηση RealService. Το DI είναι ο τρόπος να περάσει η συγκεκριμένη υλοποίηση στον Client από έξω.

Συνοπτικά:

  • DIP — αρχή σχεδιασμού.
  • DI — τρόπος υλοποίησης αυτής της αρχής.