1
00:00:00,000 --> 00:00:05,106
[MUSIQUE]

2
00:00:05,106 --> 00:00:08,592
Jetons maintenant un regard perçant sur l'injection de dépendance.

3
00:00:08,592 --> 00:00:13,874
Qu'est-ce que l'injection de dépendance et comment est-elle pertinente pour Angular ?

4
00:00:13,874 --> 00:00:17,180
Parlons de ça ensuite.

5
00:00:17,180 --> 00:00:20,260
Alors, qu'est-ce que l'injection de dépendance ?

6
00:00:20,260 --> 00:00:24,600
Injection de dépendance est un modèle de conception de logiciel.

7
00:00:24,600 --> 00:00:28,890
C'est un modèle qui est utile pour implémenter des applications où vous avez

8
00:00:28,890 --> 00:00:35,940
un objet qui dépend d'un autre objet d'une manière efficace.

9
00:00:35,940 --> 00:00:40,850
Maintenant, l'injection de dépendance, comme nous le savons, a deux parties.

10
00:00:40,850 --> 00:00:43,280
Dépendance et injection.

11
00:00:43,280 --> 00:00:45,760
Parlons d'abord de la dépendance.

12
00:00:45,760 --> 00:00:50,750
Dependency signifie que votre objet dépend d'un autre objet.

13
00:00:50,750 --> 00:00:55,400
Donc, c'est pourquoi c'est une dépendance entre votre objet et un autre objet.

14
00:00:56,500 --> 00:01:02,480
Injection parle de passer la dépendance à un objet dépendant.

15
00:01:02,480 --> 00:01:06,570
Donc, si vous avez un objet, s'il y a un mécanisme qui permet

16
00:01:06,570 --> 00:01:11,410
, vous pouvez prendre un objet et le rendre disponible pour un second objet, de sorte

17
00:01:11,410 --> 00:01:19,590
que l'autre objet puisse l'utiliser sans savoir exactement comment le premier objet est implémenté ou effacé.

18
00:01:19,590 --> 00:01:24,950
Donc, dans ce cas, l'objet dépendant n'est pas au courant,

19
00:01:24,950 --> 00:01:29,050
ou n'a pas besoin de s'inquiéter de la façon dont l'autre objet est implémenté.

20
00:01:29,050 --> 00:01:34,250
Il a juste besoin d'en faire usage, dans votre objet, où qu'il se trouve.

21
00:01:35,490 --> 00:01:41,090
Dependency Injection a été inventé par Martin Fowler en 2004.

22
00:01:41,090 --> 00:01:47,520
Et est une conception logicielle utile mettant l'accent sur la dépendance.

23
00:01:48,670 --> 00:01:52,070
Si un objet dépend d'un autre objet

24
00:01:52,070 --> 00:01:56,035
, il y a trois façons d'accéder à l'autre objet.

25
00:01:56,035 --> 00:02:01,420
1, Il peut créer l'objet dépendant lui-même en utilisant le nouvel opérateur

26
00:02:01,420 --> 00:02:03,650
que vous avez vu dans le cas des classes.

27
00:02:03,650 --> 00:02:08,280
Donc, par exemple, si vous avez besoin d'un nouvel objet d'un type de classe,

28
00:02:08,280 --> 00:02:14,592
alors vous créez cet objet en utilisant les nouveaux langages, comme C ++ ou

29
00:02:14,592 --> 00:02:20,830
Java, et même tapez script.

30
00:02:20,830 --> 00:02:26,850
Ensuite, vous pouvez utiliser cet objet particulier.

31
00:02:26,850 --> 00:02:30,950
L'autre moyen est de déclarer l'autre objet comme une variable globale, et

32
00:02:30,950 --> 00:02:34,780
alors vous recherchez la dépendance en utilisant la variable globale.

33
00:02:34,780 --> 00:02:39,970
La troisième façon de le faire est de faire passer la dépendance en vous,

34
00:02:39,970 --> 00:02:41,730
partout où elle est nécessaire.

35
00:02:41,730 --> 00:02:45,690
Donc, si vous êtes dépendant de quelque chose d'autre, alors que quelque chose d'autre vous sera injecté

36
00:02:45,690 --> 00:02:50,130
par un système où qu'il soit nécessaire.

37
00:02:50,130 --> 00:02:54,680
Donc, maintenant la troisième option vous donne beaucoup de flexibilité dans la façon dont

38
00:02:54,680 --> 00:02:57,610
ce logiciel est conçu.

39
00:02:57,610 --> 00:03:00,440
Donc, dans cette approche, dans la troisième approche,

40
00:03:00,440 --> 00:03:05,560
, il n'y a pas besoin de codage dur après dépendance.

41
00:03:05,560 --> 00:03:10,470
Dans les deux premières approches, la dépendance est codée en dur là-dedans,

42
00:03:10,470 --> 00:03:13,470
parce que vous devez être pleinement conscient de la façon dont vous créez

43
00:03:13,470 --> 00:03:18,180
l'objet dont vous êtes dépendant, au sein de votre propre objet.

44
00:03:18,180 --> 00:03:19,577
Dans le troisième objet,

45
00:03:19,577 --> 00:03:24,389
parce que l'autre objet est injecté dans vous chaque fois que vous en avez besoin,

46
00:03:24,389 --> 00:03:29,220
vous ne vous souciez pas vraiment de la façon dont il est créé, tant que vous y avez accès.

47
00:03:29,220 --> 00:03:34,125
Et l'autre avantage que cette approche apporte est qu'elle

48
00:03:34,125 --> 00:03:38,855
facilite le test de votre application parce que lorsque vous

49
00:03:38,855 --> 00:03:43,760
avez besoin d'un objet dont vous êtes dépendant, au lieu de passer

50
00:03:43,760 --> 00:03:49,020
l'objet dépendant, vous pouvez même créer un objet fictif du type et

51
00:03:49,020 --> 00:03:53,850
puis le passer dans afin de tester votre objet spécifique.

52
00:03:53,850 --> 00:03:57,530
Cette séparation entre l'objet dépendant et l'autre objet est très,

53
00:03:57,530 --> 00:04:02,250
très utile que nous réalisons dans la réalisation de tests.

54
00:04:02,250 --> 00:04:08,886
Nous en discuterons brièvement lorsque nous examinerons les tests angulaires plus tard dans ce cours.

55
00:04:08,886 --> 00:04:15,850
Dependency Injection apporte quatre rôles différents que nous devons considérer.

56
00:04:15,850 --> 00:04:20,770
Tout d'abord, c'est le service que vous allez utiliser dans

57
00:04:22,460 --> 00:04:27,160
votre composant par exemple et qui doit être injecté.

58
00:04:27,160 --> 00:04:30,270
Deuxièmement le client qui dépend du service

59
00:04:30,270 --> 00:04:33,380
qui, dans ce cas, est votre composant.

60
00:04:33,380 --> 00:04:39,470
Troisièmement, l'interface, une fois injectée comment utilisez-vous ce service.

61
00:04:39,470 --> 00:04:43,420
Et enfin l'injecteur, l'entité responsable de

62
00:04:43,420 --> 00:04:47,230
injecter cet objet dans votre objet.

63
00:04:48,620 --> 00:04:50,730
Comme vous le réaliserez bientôt,

64
00:04:50,730 --> 00:04:56,540
l'injection de dépendance angulaire express beaucoup dans la façon dont elle est implémentée.

65
00:04:56,540 --> 00:05:01,090
C'est donc ce qui facilite la séparation d'une logique métier

66
00:05:01,090 --> 00:05:05,040
de la construction de dépendances afin que vous puissiez écrire votre logique métier dans

67
00:05:05,040 --> 00:05:09,660
l'objet indépendant et ensuite les injecter partout où cela est nécessaire.

68
00:05:09,660 --> 00:05:13,590
Et la dépendance est passer dans l'objet qui le consomme

69
00:05:13,590 --> 00:05:15,130
partout où il est nécessaire.

70
00:05:15,130 --> 00:05:19,760
Maintenant, comment cette injection est-elle prise en charge ?

71
00:05:19,760 --> 00:05:24,380
Cette injection est prise en charge par le sous-système d'injection angulaire.

72
00:05:24,380 --> 00:05:30,250
Le sous-système d'injection angulaire s'occupe de la création de ces services et

73
00:05:30,250 --> 00:05:35,120
les injecte dans votre composant où que vous en ayez besoin.

74
00:05:35,120 --> 00:05:38,540
Donc, il prend également soin de résoudre les dépendances et aussi,

75
00:05:38,540 --> 00:05:45,030
fournir ces objets à d'autres composants qui nécessitent ces objets.

76
00:05:45,030 --> 00:05:49,180
Donc, le sous-système d'injecteur angulaire fournit tous ces mécanismes pour

77
00:05:49,180 --> 00:05:50,770
nous permettre de l'activer.

78
00:05:50,770 --> 00:05:52,450
Comment ça marche réellement ?

79
00:05:52,450 --> 00:05:57,101
Nous allons regarder cela dans l'exercice qui suit,

80
00:05:57,101 --> 00:06:02,527
où nous allons utiliser un service que nous créons dans les composants

81
00:06:02,527 --> 00:06:06,977
que nous avons conçus pour notre application Angular.

82
00:06:06,977 --> 00:06:12,169
[MUSIQUE]