[MUSIQUE]
Jetons maintenant un regard perçant sur l'injection de dépendance.
Qu'est-ce que l'injection de dépendance et comment est-elle pertinente pour Angular ?
Parlons de ça ensuite.
Alors, qu'est-ce que l'injection de dépendance ?
Injection de dépendance est un modèle de conception de logiciel.
C'est un modèle qui est utile pour implémenter des applications où vous avez
un objet qui dépend d'un autre objet d'une manière efficace.
Maintenant, l'injection de dépendance, comme nous le savons, a deux parties.
Dépendance et injection.
Parlons d'abord de la dépendance.
Dependency signifie que votre objet dépend d'un autre objet.
Donc, c'est pourquoi c'est une dépendance entre votre objet et un autre objet.
Injection parle de passer la dépendance à un objet dépendant.
Donc, si vous avez un objet, s'il y a un mécanisme qui permet
, vous pouvez prendre un objet et le rendre disponible pour un second objet, de sorte
que l'autre objet puisse l'utiliser sans savoir exactement comment le premier objet est implémenté ou effacé.
Donc, dans ce cas, l'objet dépendant n'est pas au courant,
ou n'a pas besoin de s'inquiéter de la façon dont l'autre objet est implémenté.
Il a juste besoin d'en faire usage, dans votre objet, où qu'il se trouve.
Dependency Injection a été inventé par Martin Fowler en 2004.
Et est une conception logicielle utile mettant l'accent sur la dépendance.
Si un objet dépend d'un autre objet
, il y a trois façons d'accéder à l'autre objet.
1, Il peut créer l'objet dépendant lui-même en utilisant le nouvel opérateur
que vous avez vu dans le cas des classes.
Donc, par exemple, si vous avez besoin d'un nouvel objet d'un type de classe,
alors vous créez cet objet en utilisant les nouveaux langages, comme C ++ ou
Java, et même tapez script.
Ensuite, vous pouvez utiliser cet objet particulier.
L'autre moyen est de déclarer l'autre objet comme une variable globale, et
alors vous recherchez la dépendance en utilisant la variable globale.
La troisième façon de le faire est de faire passer la dépendance en vous,
partout où elle est nécessaire.
Donc, si vous êtes dépendant de quelque chose d'autre, alors que quelque chose d'autre vous sera injecté
par un système où qu'il soit nécessaire.
Donc, maintenant la troisième option vous donne beaucoup de flexibilité dans la façon dont
ce logiciel est conçu.
Donc, dans cette approche, dans la troisième approche,
, il n'y a pas besoin de codage dur après dépendance.
Dans les deux premières approches, la dépendance est codée en dur là-dedans,
parce que vous devez être pleinement conscient de la façon dont vous créez
l'objet dont vous êtes dépendant, au sein de votre propre objet.
Dans le troisième objet,
parce que l'autre objet est injecté dans vous chaque fois que vous en avez besoin,
vous ne vous souciez pas vraiment de la façon dont il est créé, tant que vous y avez accès.
Et l'autre avantage que cette approche apporte est qu'elle
facilite le test de votre application parce que lorsque vous
avez besoin d'un objet dont vous êtes dépendant, au lieu de passer
l'objet dépendant, vous pouvez même créer un objet fictif du type et
puis le passer dans afin de tester votre objet spécifique.
Cette séparation entre l'objet dépendant et l'autre objet est très,
très utile que nous réalisons dans la réalisation de tests.
Nous en discuterons brièvement lorsque nous examinerons les tests angulaires plus tard dans ce cours.
Dependency Injection apporte quatre rôles différents que nous devons considérer.
Tout d'abord, c'est le service que vous allez utiliser dans
votre composant par exemple et qui doit être injecté.
Deuxièmement le client qui dépend du service
qui, dans ce cas, est votre composant.
Troisièmement, l'interface, une fois injectée comment utilisez-vous ce service.
Et enfin l'injecteur, l'entité responsable de
injecter cet objet dans votre objet.
Comme vous le réaliserez bientôt,
l'injection de dépendance angulaire express beaucoup dans la façon dont elle est implémentée.
C'est donc ce qui facilite la séparation d'une logique métier
de la construction de dépendances afin que vous puissiez écrire votre logique métier dans
l'objet indépendant et ensuite les injecter partout où cela est nécessaire.
Et la dépendance est passer dans l'objet qui le consomme
partout où il est nécessaire.
Maintenant, comment cette injection est-elle prise en charge ?
Cette injection est prise en charge par le sous-système d'injection angulaire.
Le sous-système d'injection angulaire s'occupe de la création de ces services et
les injecte dans votre composant où que vous en ayez besoin.
Donc, il prend également soin de résoudre les dépendances et aussi,
fournir ces objets à d'autres composants qui nécessitent ces objets.
Donc, le sous-système d'injecteur angulaire fournit tous ces mécanismes pour
nous permettre de l'activer.
Comment ça marche réellement ?
Nous allons regarder cela dans l'exercice qui suit,
où nous allons utiliser un service que nous créons dans les composants
que nous avons conçus pour notre application Angular.
[MUSIQUE]