Ποια είναι η διαφορά μεταξύ Dependency Injection και Dependency Inversion;
sobes.tech AI
Απάντηση από AI
Η Εισαγωγή Εξαρτήσεων (Dependency Injection, DI) και η Αντιστροφή Εξαρτήσεων (Dependency Inversion, DIP) είναι σχετικές, αλλά διαφορετικές έννοιες στον τομέα του σχεδιασμού λογισμικού.
-
Αρχή Αντιστροφής Εξαρτήσεων (DIP) — μία από τις πέντε αρχές SOLID. Λέει ότι:
- Τα modules υψηλού επιπέδου δεν πρέπει να εξαρτώνται από τα modules χαμηλού επιπέδου. Και τα δύο πρέπει να εξαρτώνται από αφαιρέσεις.
- Οι αφαιρέσεις δεν πρέπει να εξαρτώνται από λεπτομέρειες. Οι λεπτομέρειες πρέπει να εξαρτώνται από τις αφαιρέσεις.
Αυτή η αρχή στοχεύει στη μείωση της συσχέτισης και στην αύξηση της ευελιξίας της αρχιτεκτονικής.
-
Εισαγωγή Εξαρτήσεων (DI) — είναι ένα μοτίβο (πρότυπο) για την υλοποίηση της αντιστροφής των εξαρτήσεων. Το DI σημαίνει ότι οι εξαρτήσεις ενός αντικειμένου περνιούνται από έξω (π.χ., μέσω του κατασκευαστή, ενός setter ή μιας διεπαφής), αντί να δημιουργούνται μέσα στο αντικείμενο.
Παράδειγμα DI σε C++:
class ILogger {
public:
virtual void Log(const std::string& message) = 0;
};
class ConsoleLogger : public ILogger {
public:
void Log(const std::string& message) override {
std::cout << message << std::endl;
}
};
class Application {
ILogger& logger;
public:
Application(ILogger& logger) : logger(logger) {}
void Run() {
logger.Log("Εφαρμογή ξεκίνησε");
}
};
int main() {
ConsoleLogger logger;
Application app(logger); // εισαγωγή εξαρτήσεων
app.Run();
}
Συνοπτικά: Το DIP είναι μια αρχή σχεδιασμού, και το DI είναι ένας τρόπος υλοποίησής της.