Un modèle de conception pour réduire le couplage entre les composants, en injectant dynamiquement dans un logiciel des dépendances de composants dont il a besoin pour fonctionner.

L'injection de dépendance(DI) est un design-pattern pour la programmation orientée objet impliquant l'injection dynamique (insertion) dans un logiciel des dépendances (composants de service) dont il a besoin pour fonctionner, sans que le composant dépendant ne codifie en dur une dépendance au service. Cela réduit le couplage entre le consommateur dépendant et le service.

Ressources / questions de fond

Si vous avez besoin d'une introduction générale à DI, vous devez vous référer à cette question: Qu'est-ce que l'injection de dépendance?

Si vous avez besoin d'une introduction non technique, vous pouvez vous référer à cette question: Comment expliquer l'injection de dépendance à un enfant de 5 ans.

Pour des recommandations générales sur l'écriture de code compatible DI sans conteneur DI, voir Dependency Inject (DI) "friendly "bibliothèque.

Si vous vous demandez pourquoi vous devriez utiliser un conteneur DI (alias un ioc-container) au lieu du DI du pauvre, consultez Pourquoi ai-je besoin d'un conteneur IoC par opposition à un code DI simple?

Si vous vous demandez ce qu'est la racine de composition, voir Qu'est-ce qu'une racine de composition dans le contexte de l'injection de dépendance.

Pour les inconvénients potentiels de l'utilisation de DI, voir Quels sont les inconvénients de l'utilisation de l'injection de dépendance ?

Les dependency-injectionet inversion-of-controlsont étroitement liés. La différence entre eux est discutée à où-exactement-est-le -différence-entre-ioc-et-di.

Vous pouvez également lire les informations de base ici: Injection de dépendance pour débutant - 1

Avantages de l'injection de dépendance

  • Séparation des préoccupations.
  • Boilerplate Réduction du code dans les classes d'application car tout le travail d'initialisation des dépendances est géré par le composant injecteur.
  • Les composants configurables rendent l'application facilement extensible.
  • Le test unitaire est facile avec des objets fictifs.

Inconvénients de l'injection de dépendance

  • En cas de surutilisation, cela peut entraîner des problèmes de maintenance car l'effet des modifications est connu au moment de l'exécution.
  • L'injection de dépendances masque les dépendances de classe de service qui peuvent entraîner des erreurs d'exécution qui auraient été détectées au moment de la compilation.

Modèles associés