Sobes.tech
Intern

Quelle est la différence entre Dependency Injection et Dependency Inversion ?

sobes.tech IA

Réponse de l'IA

L'injection de dépendances (Dependency Injection, DI) et l'inversion de dépendances (Dependency Inversion, DIP) sont des concepts liés mais différents dans le domaine de la conception logicielle.

  • Principe d'inversion de dépendances (DIP) — l'un des cinq principes SOLID. Il stipule que :

    1. Les modules de niveau supérieur ne doivent pas dépendre des modules de niveau inférieur. Les deux doivent dépendre d'abstractions.
    2. Les abstractions ne doivent pas dépendre des détails. Les détails doivent dépendre des abstractions.

    Ce principe vise à réduire le couplage et à augmenter la flexibilité de l'architecture.

  • Injection de dépendances (DI) — est un pattern (modèle) pour réaliser l'inversion de dépendances. DI signifie que les dépendances d'un objet lui sont passées de l'extérieur (par exemple, via le constructeur, un setter ou une interface), plutôt que d'être créées à l'intérieur de l'objet.

Exemple de DI en 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("Application démarrée");
    }
};

int main() {
    ConsoleLogger logger;
    Application app(logger); // injection de dépendance
    app.Run();
}

En résumé : DIP est un principe de conception, et DI est une méthode pour le mettre en œuvre.