Ποια είναι η βασική διαφορά μεταξύ Αντιστροφής Εξαρτήσεων και Εισαγωγής Εξαρτήσεων;
sobes.tech AI
Απάντηση από AI
Αντιστροφή Εξαρτήσεων (αρχή αντιστροφής των εξαρτήσεων) είναι μια από τις αρχές SOLID, που δηλώνει ότι τα modules υψηλού επιπέδου δεν πρέπει να εξαρτώνται από τα modules χαμηλού επιπέδου, και τα δύο πρέπει να εξαρτώνται από αφαιρέσεις. Οι αφαιρέσεις δεν πρέπει να εξαρτώνται από λεπτομέρειες, οι λεπτομέρειες πρέπει να εξαρτώνται από αφαιρέσεις.
Η Εισαγωγή Εξαρτήσεων είναι ένα συγκεκριμένο μοτίβο ή τεχνική που υλοποιεί την αρχή της αντιστροφής των εξαρτήσεων. Είναι ένας τρόπος να μεταβιβάζονται οι εξαρτήσεις (αντικείμενα) σε μια κλάση ή λειτουργία από έξω, αντί να δημιουργούνται εσωτερικά.
Με άλλα λόγια:
- Η αντιστροφή των εξαρτήσεων είναι μια έννοια ή αρχή σχεδιασμού.
- Η Εισαγωγή Εξαρτήσεων είναι ένας τρόπος υλοποίησης αυτής της αρχής, όπου οι εξαρτήσεις μεταβιβάζονται από έξω.
Παράδειγμα σε Go:
// Αφαίρεση
type Notifier interface {
Notify(message string)
}
// Συγκεκριμένη υλοποίηση
type EmailNotifier struct {}
func (e EmailNotifier) Notify(message string) {
fmt.Println("Αποστολή email με μήνυμα:", message)
}
// Υψηλό επίπεδο module
type UserService struct {
notifier Notifier // εξαρτάται από την αφαιρεση
}
// Εισαγωγή Εξαρτήσεων μέσω κατασκευαστή
func NewUserService(n Notifier) *UserService {
return &UserService{notifier: n}
}
func (s *UserService) RegisterUser(name string) {
// λογική εγγραφής
s.notifier.Notify("Χρήστης εγγράφη: " + name)
}
Εδώ, η αρχή της αντιστροφής των εξαρτήσεων τηρείται μέσω της εξάρτησης από το interface Notifier, και η Εισαγωγή Εξαρτήσεων γίνεται περνώντας μια συγκεκριμένη υλοποίηση του EmailNotifier στον κατασκευαστή του UserService.