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

2
00:00:05,106 --> 00:00:08,592
Lassen Sie uns jetzt einen durchdringenden Blick auf die Abhängigkeitsinjektion werfen.

3
00:00:08,592 --> 00:00:13,874
Was genau ist Abhängigkeitsinjektion und wie ist sie für Angular relevant?

4
00:00:13,874 --> 00:00:17,180
Lass uns als Nächstes darüber reden.

5
00:00:17,180 --> 00:00:20,260
Also, was genau ist Abhängigkeitsinjektion?

6
00:00:20,260 --> 00:00:24,600
Abhängigkeitsinjektion Ist ein Software-Entwurfsmuster.

7
00:00:24,600 --> 00:00:28,890
Dies ist ein Muster, das nützlich ist, um Anwendungen zu implementieren

8
00:00:28,890 --> 00:00:35,940
, bei denen Sie ein Objekt haben, das auf effiziente Weise von einem anderen Objekt abhängig ist.

9
00:00:35,940 --> 00:00:40,850
Nun hat die Dependency Injection, wie wir erkennen, zwei Teile.

10
00:00:40,850 --> 00:00:43,280
Abhängigkeit und Injektion.

11
00:00:43,280 --> 00:00:45,760
Lassen Sie uns zuerst über die Abhängigkeit sprechen.

12
00:00:45,760 --> 00:00:50,750
Abhängigkeit bedeutet, dass Ihr Objekt von einem anderen Objekt abhängig ist.

13
00:00:50,750 --> 00:00:55,400
Deshalb ist dies eine Abhängigkeit zwischen Ihrem Objekt und einem anderen Objekt. Bei

14
00:00:56,500 --> 00:01:02,480
der Injektion geht es darum, die Abhängigkeit an ein abhängiges Objekt zu übergeben.

15
00:01:02,480 --> 00:01:06,570
Also, wenn Sie ein Objekt haben, wenn es einen Mechanismus gibt, der es

16
00:01:06,570 --> 00:01:11,410
Ihnen ermöglicht, ein Objekt zu nehmen und es dann einem zweiten Objekt zur Verfügung zu

17
00:01:11,410 --> 00:01:15,360
stellen, so dass das andere Objekt es verwenden kann, ohne

18
00:01:15,360 --> 00:01:19,590
genau zu wissen, wie das erste Objekt implementiert oder gelöscht wird.

19
00:01:19,590 --> 00:01:24,950
In diesem Fall ist das Objekt, das abhängig ist, nicht bewusst

20
00:01:24,950 --> 00:01:29,050
oder muss sich keine Gedanken darüber machen, wie das andere Objekt implementiert wird.

21
00:01:29,050 --> 00:01:34,250
Es muss nur Gebrauch machen, innerhalb Ihres Objekts, wo immer es ist.

22
00:01:35,490 --> 00:01:41,090
Dependency Injection wurde 2004 von Martin Fowler geprägt.

23
00:01:41,090 --> 00:01:47,520
Und ist ein nützliches Software-Design, das weiter auf Abhängigkeit betont.

24
00:01:48,670 --> 00:01:52,070
Wenn ein Objekt von einem anderen Objekt abhängig ist,

25
00:01:52,070 --> 00:01:56,035
gibt es drei Möglichkeiten, auf das andere Objekt zuzugreifen.

26
00:01:56,035 --> 00:02:01,420
1, Es kann das abhängige Objekt selbst erstellen, indem Sie den neuen Operator verwenden, den

27
00:02:01,420 --> 00:02:03,650
Sie dies im Fall von Klassen gesehen haben.

28
00:02:03,650 --> 00:02:08,280
Wenn Sie beispielsweise ein neues Objekt eines Klassentyps

29
00:02:08,280 --> 00:02:14,592
benötigen, erstellen Sie dieses Objekt mit dem neuen innerhalb von Sprachen wie C ++ oder

30
00:02:14,592 --> 00:02:20,830
Java und geben sogar Skript ein.

31
00:02:20,830 --> 00:02:26,850
Dann können Sie dieses bestimmte Objekt verwenden.

32
00:02:26,850 --> 00:02:30,950
Die andere Möglichkeit besteht darin, das andere Objekt als globale Variable zu deklarieren und

33
00:02:30,950 --> 00:02:34,780
dann die Abhängigkeit mithilfe der globalen Variablen nachzuschlagen.

34
00:02:34,780 --> 00:02:39,970
Die dritte Möglichkeit, dies zu tun, besteht darin, die Abhängigkeit an Sie weitergegeben zu haben,

35
00:02:39,970 --> 00:02:41,730
wo immer sie gebraucht wird.

36
00:02:41,730 --> 00:02:45,690
Wenn Sie also auf etwas anderes angewiesen sind, dann wird

37
00:02:45,690 --> 00:02:50,130
Ihnen etwas anderes von einem System injiziert, wo immer es benötigt wird.

38
00:02:50,130 --> 00:02:54,680
Also, jetzt gibt die dritte Option Ihnen viel Flexibilität in der Art und Weise

39
00:02:54,680 --> 00:02:57,610
, wie Software entworfen wird.

40
00:02:57,610 --> 00:03:00,440
Bei diesem Ansatz, im dritten Ansatz,

41
00:03:00,440 --> 00:03:05,560
gibt es keine Notwendigkeit für eine harte Codierung nach der Abhängigkeit.

42
00:03:05,560 --> 00:03:10,470
In den ersten beiden Ansätzen ist die Abhängigkeit dort fest codiert,

43
00:03:10,470 --> 00:03:13,470
da Sie sich dessen bewusst sein müssen, wie Sie

44
00:03:13,470 --> 00:03:18,180
das Objekt erstellen, von dem Sie abhängig sind, innerhalb Ihres eigenen Objekts.

45
00:03:18,180 --> 00:03:19,577
Im dritten Objekt,

46
00:03:19,577 --> 00:03:24,389
da das andere Objekt in Sie injiziert wird, wann immer Sie es benötigen,

47
00:03:24,389 --> 00:03:29,220
ist es Ihnen egal, wie es erstellt wird, solange Sie Zugriff darauf haben.

48
00:03:29,220 --> 00:03:38,855
Und der andere Vorteil, den dieser Ansatz

49
00:03:38,855 --> 00:03:43,760
herbeiführt, ist, dass es das Testen Ihrer Anwendung erleichtert, denn wenn Sie ein Objekt benötigen, von dem Sie abhängig sind, anstatt

50
00:03:43,760 --> 00:03:49,020
das abhängige Objekt zu

51
00:03:49,020 --> 00:03:53,850
übergeben, könnten Sie sogar ein Mock-Objekt des Typs erstellen und es dann in , um Ihr spezifisches Objekt zu testen.

52
00:03:53,850 --> 00:03:57,530
Diese Trennung zwischen dem abhängigen Objekt und dem anderen Objekt ist sehr,

53
00:03:57,530 --> 00:04:02,250
sehr nützlich, wie wir bei der Durchführung von Tests erkennen.

54
00:04:02,250 --> 00:04:08,886
Wir werden dies kurz besprechen, wenn wir uns später in diesem Kurs Winkeltests ansehen.

55
00:04:08,886 --> 00:04:15,850
Dependency Injection bringt vier verschiedene Rollen, die wir berücksichtigen müssen.

56
00:04:15,850 --> 00:04:20,770
Erstens ist natürlich der Dienst, den Sie

57
00:04:22,460 --> 00:04:27,160
zum Beispiel innerhalb Ihrer Komponente nutzen werden und der injiziert werden muss.

58
00:04:27,160 --> 00:04:30,270
Zweitens ist der Client, der von

59
00:04:30,270 --> 00:04:33,380
dem Service abhängig ist, der in diesem Fall Ihre Komponente ist.

60
00:04:33,380 --> 00:04:39,470
Drittens, die Schnittstelle, einmal injiziert, wie Sie diesen Dienst nutzen.

61
00:04:39,470 --> 00:04:43,420
Und schließlich der Injektor, die Entität, die dafür verantwortlich ist

62
00:04:43,420 --> 00:04:47,230
, dieses Objekt in Ihr Objekt zu injizieren.

63
00:04:48,620 --> 00:04:50,730
Wie Sie ziemlich bald feststellen werden,

64
00:04:50,730 --> 00:04:56,540
Winkel-Express-Abhängigkeitsinjektion sehr in der Art und Weise, wie es implementiert wird.

65
00:04:56,540 --> 00:05:01,090
Dies erleichtert also die Trennung einer Geschäftslogik

66
00:05:01,090 --> 00:05:05,040
von der Abhängigkeitskonstruktion, so dass Sie Ihre Geschäftslogik in

67
00:05:05,040 --> 00:05:09,660
das unabhängige Objekt schreiben und sie dann injizieren können, wo immer es erforderlich ist.

68
00:05:09,660 --> 00:05:13,590
Und die Abhängigkeit wird in das Objekt übergeben, das sie verbraucht,

69
00:05:13,590 --> 00:05:15,130
wo immer es benötigt wird.

70
00:05:15,130 --> 00:05:19,760
Nun, wie wird diese Injektion gekümmert?

71
00:05:19,760 --> 00:05:24,380
Diese Injektion wird durch das Winkelinjektionssubsytem gesorgt.

72
00:05:24,380 --> 00:05:30,250
Das Winkelinjektions-Subsystem kümmert sich um die Erstellung dieser Dienste und

73
00:05:30,250 --> 00:05:35,120
injiziert sie dann in Ihre Komponente, wo immer Sie sie benötigen.

74
00:05:35,120 --> 00:05:38,540
Es kümmert sich also auch um das Auflösen der Abhängigkeiten und auch

75
00:05:38,540 --> 00:05:45,030
um die Bereitstellung dieser Objekte für andere Komponenten, die diese Objekte benötigen.

76
00:05:45,030 --> 00:05:49,180
So bietet das Winkelinjektor-Subsystem all diese Mechanismen für

77
00:05:49,180 --> 00:05:50,770
uns, um dies zu ermöglichen.

78
00:05:50,770 --> 00:05:52,450
Wie funktioniert es eigentlich?

79
00:05:52,450 --> 00:05:57,101
Wir werden das in der folgenden Übung betrachten,

80
00:05:57,101 --> 00:06:02,527
wo wir einen Dienst verwenden, den wir in den Komponenten erstellen

81
00:06:02,527 --> 00:06:06,977
, die wir für unsere Angular-Anwendung entwickelt haben.

82
00:06:06,977 --> 00:06:12,169
( MUSIK)