par Bhavya Karia
Introduction
en génie logiciel, l’injection de dépendance est une technique par laquelle un objet (ou une méthode statique) fournit les dépendances d’un autre objet. Une dépendance est un objet qui peut être utilisé (un service).
c’est la définition de Wikipedia mais quand même, mais ce n’est pas particulièrement facile à comprendre. Donc, nous allons essayer de mieux la comprendre.,
avant de comprendre ce que cela signifie en programmation, voyons d’abord ce que cela signifie en général car cela nous aidera à mieux comprendre le concept.
la dépendance ou la dépendance signifie s’appuyer sur quelque chose pour le support. Comme si je dis que nous sommes trop compter sur les téléphones mobiles que cela signifie que nous sommes dépendants.
donc, avant d’arriver aux injections de dépendance, comprenons d’abord ce que signifie une dépendance en programmation.
lorsque la classe A utilise certaines fonctionnalités de la Classe B, il est dit que la classe A a une dépendance de la classe B.,
En Java, avant de pouvoir utiliser des méthodes d’autres classes, nous devons d’abord créer l’objet de cette classe (c’est-à-dire que la classe A doit créer une instance de la Classe B).
ainsi, le transfert de la tâche de création de l’objet à quelqu’un d’autre et l’utilisation directe de la dépendance est appelée injection de dépendance.
Pourquoi devrais-je utiliser l’injection de dépendance?,
disons que nous avons une classe de voiture qui contient divers objets tels que les roues, le moteur, etc.
ici, la classe car est responsable de la création de tous les objets de dépendance. Maintenant, et si nous décidons d’abandonner les roues MRFWheels à l’avenir et que nous voulons utiliser des roues Yokohama?
nous devrons recréer l’objet car avec une nouvelle dépendance Yokohama. Mais lorsque vous utilisez dependency injection (DI), nous pouvons changer les roues à l’exécution (car les dépendances peuvent être injectées à l’exécution plutôt qu’au moment de la compilation).,
Vous pouvez penser à DI comme l’intermédiaire dans notre code qui fait tout le travail de création de l’objet wheels préféré et de le fournir à la classe Car.
cela rend notre classe de voiture indépendante de la création des objets de roues, de batterie, etc.
il existe essentiellement trois types d’injection de dépendance:
- injection de constructeur: les dépendances sont fournies via un constructeur de classe.
- injection de setter: le client expose une méthode de setter que l’injecteur utilise pour injecter la dépendance.,
- injection d’interface: la dépendance fournit une méthode d’injecteur qui injectera la dépendance dans n’importe quel client qui lui est passé. Les Clients doivent implémenter une interface qui expose une méthode setter qui accepte la dépendance.
donc maintenant, c’est la responsabilité de l’injection de dépendance de:
- créer les objets
- savoir quelles classes nécessitent ces objets
- et leur fournir tous ces objets
S’il y a un changement dans les objets, alors DI y regarde et cela ne devrait pas concerner la classe utilisant ces objets., De cette façon, si les objets changent à l’avenir, alors sa responsabilité de fournir les objets appropriés à la classe.
Inversion de contrôle —le concept derrière DI
Ceci indique qu’une classe ne doit pas configurer ses dépendances statiquement mais doit être configurée par une autre classe de l’extérieur.
c’est le cinquième principe de S. O. L. I. D — les cinq principes de base de la programmation orientée objet et de la conception par oncle Bob-qui stipule qu’une classe doit dépendre de l’abstraction et non des concrétions (en termes simples, codées en dur).,
selon les principes, une classe devrait se concentrer sur l’accomplissement de ses responsabilités et non sur la création d’objets dont elle a besoin pour s’acquitter de ces responsabilités. Et c’est là que l’injection de dépendance entre en jeu: elle fournit à la classe les objets requis.
Remarque: Si vous voulez en savoir plus sur les principes solides de L’oncle Bob, vous pouvez vous rendre sur ce lien.
avantages de l’utilisation de DI
- aide aux tests unitaires.
- Le code de la plaque de chaudière est réduit, car l’initialisation des dépendances est effectuée par le composant injecteur.,
- Extension de l’application devient plus facile.
- Permet d’activer le couplage lâche, ce qui est important dans la programmation d’application.
inconvénients de DI
- Il est un peu complexe à apprendre, et si surutilisé peut conduire à des problèmes de gestion et d’autres problèmes.
- De nombreuses erreurs de compilation sont poussées à l’exécution.
- les frameworks D’injection de dépendances sont implémentés avec la réflexion ou la programmation dynamique. Cela peut entraver l’utilisation de l’automatisation ID, telle que « rechercher des références”, « afficher la hiérarchie des appels” et refactoring sécurisé.,
Vous pouvez implémenter l’injection de dépendance par vous-même (pure Vanilla) ou utiliser des bibliothèques ou des frameworks tiers.
des Bibliothèques et des structures qui mettent en œuvre des DI
- Printemps (Java)
- Google Guice (Java)
- Dague (Java et Android)
- le Château de Windsor (.NET)
- l’Unité.,
pour en savoir plus sur l’injection de dépendance, vous pouvez consulter les ressources ci — dessous:
Java Dependency Injection — di Design Pattern Example Tutorial — JournalDev
utilisation de l’injection de dépendance en Java — Introduction — Tutorial — Vogella
Inversion des conteneurs de contrôle et du modèle d’Injection de dépendance-Martin Fowler
J’espère que
Si vous avez aimé l’article et que vous voulez lire plus d’articles étonnants, alors suivez-moi ici (Bhavya Karia) et montrez votre soutien car cela me motive à écrire plus.,
Si vous avez des questions ou des commentaires pour moi que nous allons nous connecter sur LinkedIn, Twitter , Facebook.
Edit 1:
Merci à Sergey Ufocoder maintenant cet article a été converti en langue russe. Mes Amis Russes et qui peuvent tous Lire la langue russe lui donnent une lecture.
lien vers l’article
de plus, si vous souhaitez appliquer DI en JavaScript et que vous recherchez une bibliothèque, alors Jo Surikat vous suggère d’essayer sa bibliothèque.
di-Ninja
Une autre bibliothèque di impressionnante en JavaScript a été suggérée par Nicolas Froidure.,
knifecycle
Edit 2:
Si vous êtes un développeur PHP, alors ne vous inquiétez pas, vous a tous ainsi couverts. Gordon Forsythe a recommandé cette incroyable bibliothèque que vous voudrez peut-être essayer.
auryn
Merci pour tous les mots gentils que j’ai reçu. Partagez l’article afin que de plus en plus de personnes puissent en bénéficier.