[MUSIK]
Lassen Sie uns jetzt einen durchdringenden Blick auf die Abhängigkeitsinjektion werfen.
Was genau ist Abhängigkeitsinjektion und wie ist sie für Angular relevant?
Lass uns als Nächstes darüber reden.
Also, was genau ist Abhängigkeitsinjektion?
Abhängigkeitsinjektion Ist ein Software-Entwurfsmuster.
Dies ist ein Muster, das nützlich ist, um Anwendungen zu implementieren
, bei denen Sie ein Objekt haben, das auf effiziente Weise von einem anderen Objekt abhängig ist.
Nun hat die Dependency Injection, wie wir erkennen, zwei Teile.
Abhängigkeit und Injektion.
Lassen Sie uns zuerst über die Abhängigkeit sprechen.
Abhängigkeit bedeutet, dass Ihr Objekt von einem anderen Objekt abhängig ist.
Deshalb ist dies eine Abhängigkeit zwischen Ihrem Objekt und einem anderen Objekt. Bei
der Injektion geht es darum, die Abhängigkeit an ein abhängiges Objekt zu übergeben.
Also, wenn Sie ein Objekt haben, wenn es einen Mechanismus gibt, der es
Ihnen ermöglicht, ein Objekt zu nehmen und es dann einem zweiten Objekt zur Verfügung zu
stellen, so dass das andere Objekt es verwenden kann, ohne
genau zu wissen, wie das erste Objekt implementiert oder gelöscht wird.
In diesem Fall ist das Objekt, das abhängig ist, nicht bewusst
oder muss sich keine Gedanken darüber machen, wie das andere Objekt implementiert wird.
Es muss nur Gebrauch machen, innerhalb Ihres Objekts, wo immer es ist.
Dependency Injection wurde 2004 von Martin Fowler geprägt.
Und ist ein nützliches Software-Design, das weiter auf Abhängigkeit betont.
Wenn ein Objekt von einem anderen Objekt abhängig ist,
gibt es drei Möglichkeiten, auf das andere Objekt zuzugreifen.
1, Es kann das abhängige Objekt selbst erstellen, indem Sie den neuen Operator verwenden, den
Sie dies im Fall von Klassen gesehen haben.
Wenn Sie beispielsweise ein neues Objekt eines Klassentyps
benötigen, erstellen Sie dieses Objekt mit dem neuen innerhalb von Sprachen wie C ++ oder
Java und geben sogar Skript ein.
Dann können Sie dieses bestimmte Objekt verwenden.
Die andere Möglichkeit besteht darin, das andere Objekt als globale Variable zu deklarieren und
dann die Abhängigkeit mithilfe der globalen Variablen nachzuschlagen.
Die dritte Möglichkeit, dies zu tun, besteht darin, die Abhängigkeit an Sie weitergegeben zu haben,
wo immer sie gebraucht wird.
Wenn Sie also auf etwas anderes angewiesen sind, dann wird
Ihnen etwas anderes von einem System injiziert, wo immer es benötigt wird.
Also, jetzt gibt die dritte Option Ihnen viel Flexibilität in der Art und Weise
, wie Software entworfen wird.
Bei diesem Ansatz, im dritten Ansatz,
gibt es keine Notwendigkeit für eine harte Codierung nach der Abhängigkeit.
In den ersten beiden Ansätzen ist die Abhängigkeit dort fest codiert,
da Sie sich dessen bewusst sein müssen, wie Sie
das Objekt erstellen, von dem Sie abhängig sind, innerhalb Ihres eigenen Objekts.
Im dritten Objekt,
da das andere Objekt in Sie injiziert wird, wann immer Sie es benötigen,
ist es Ihnen egal, wie es erstellt wird, solange Sie Zugriff darauf haben.
Und der andere Vorteil, den dieser Ansatz
herbeiführt, ist, dass es das Testen Ihrer Anwendung erleichtert, denn wenn Sie ein Objekt benötigen, von dem Sie abhängig sind, anstatt
das abhängige Objekt zu
übergeben, könnten Sie sogar ein Mock-Objekt des Typs erstellen und es dann in , um Ihr spezifisches Objekt zu testen.
Diese Trennung zwischen dem abhängigen Objekt und dem anderen Objekt ist sehr,
sehr nützlich, wie wir bei der Durchführung von Tests erkennen.
Wir werden dies kurz besprechen, wenn wir uns später in diesem Kurs Winkeltests ansehen.
Dependency Injection bringt vier verschiedene Rollen, die wir berücksichtigen müssen.
Erstens ist natürlich der Dienst, den Sie
zum Beispiel innerhalb Ihrer Komponente nutzen werden und der injiziert werden muss.
Zweitens ist der Client, der von
dem Service abhängig ist, der in diesem Fall Ihre Komponente ist.
Drittens, die Schnittstelle, einmal injiziert, wie Sie diesen Dienst nutzen.
Und schließlich der Injektor, die Entität, die dafür verantwortlich ist
, dieses Objekt in Ihr Objekt zu injizieren.
Wie Sie ziemlich bald feststellen werden,
Winkel-Express-Abhängigkeitsinjektion sehr in der Art und Weise, wie es implementiert wird.
Dies erleichtert also die Trennung einer Geschäftslogik
von der Abhängigkeitskonstruktion, so dass Sie Ihre Geschäftslogik in
das unabhängige Objekt schreiben und sie dann injizieren können, wo immer es erforderlich ist.
Und die Abhängigkeit wird in das Objekt übergeben, das sie verbraucht,
wo immer es benötigt wird.
Nun, wie wird diese Injektion gekümmert?
Diese Injektion wird durch das Winkelinjektionssubsytem gesorgt.
Das Winkelinjektions-Subsystem kümmert sich um die Erstellung dieser Dienste und
injiziert sie dann in Ihre Komponente, wo immer Sie sie benötigen.
Es kümmert sich also auch um das Auflösen der Abhängigkeiten und auch
um die Bereitstellung dieser Objekte für andere Komponenten, die diese Objekte benötigen.
So bietet das Winkelinjektor-Subsystem all diese Mechanismen für
uns, um dies zu ermöglichen.
Wie funktioniert es eigentlich?
Wir werden das in der folgenden Übung betrachten,
wo wir einen Dienst verwenden, den wir in den Komponenten erstellen
, die wir für unsere Angular-Anwendung entwickelt haben.
( MUSIK)