Ich bin gespannt, was genau Dekorateure in AngularJS sind. Es gibt nicht viele Online-Informationen für Dekorateure, außer einem Klappentext in der AngularJS-Dokumentation und einer kurzen (wenn auch interessanten) Erwähnung in einem Youtube-Video .
Wie die Angular-Leute es ausdrücken, ist ein Dekorateur:
Durch die Dekoration des Dienstes kann der Dekorateur die Erstellung der Dienstinstanz abfangen. Die zurückgegebene Instanz kann die ursprüngliche Instanz oder eine neue Instanz sein, die an die ursprüngliche Instanz delegiert.
Ich weiß nicht genau, was das bedeutet , und ich bin mir nicht sicher, warum Sie diese Logik vom Dienst selbst trennen würden. Wenn ich beispielsweise unter verschiedenen Bedingungen etwas anderes zurückgeben möchte, übergebe ich einfach unterschiedliche Argumente an die relevanten Funktionen oder verwende eine andere Funktion, die diesen privaten Status teilt.
Ich bin immer noch eine Art AngularJS-Noob, also bin ich mir sicher, dass es nur Unwissenheit und / oder schlechte Gewohnheiten sind, die ich aufgegriffen habe.
quelle
Mit Dekorateuren können wir Querschnittsthemen ausräumen und den Diensten ermöglichen, das Prinzip der Einzelverantwortung beizubehalten, ohne sich um den Code der "Infrastruktur" kümmern zu müssen.
Praktische Verwendung von Dekorateuren:
In all diesen Fällen beschränken wir den Code im Service auf seine Hauptverantwortung.
quelle
decorator
kann die von erstellte Dienstinstanz abfangenfactory, service, value, provider
und bietet die Optionen zum Ändern einigerinstance(service)
ansonsten nicht konfigurierbarer / mit Optionen.Es kann beispielsweise auch Modellinstanzen zu Testzwecken bereitstellen
$http
.quelle
directive
Definitionen überschreiben können, wie sie von Ben NadelMit einfachen Worten können wir sagen, dass es wie eine Erweiterungsmethode ist. Zum Beispiel. Wir haben eine Klasse und sie hat zwei Methoden und zur Laufzeit möchten wir mehr Methoden hinzufügen, als wir Decorator verwenden.
Wir können $ require.decorator nicht mit Konstanten verwenden, da wir die Konstanten, die sie schreibgeschützt sind, nicht ändern können.
quelle
Kurz gesagt können Dekorateure wie folgt beschrieben werden: -
Es verwendet den
$provide
Dienst durch Winkel und modifiziert oder ersetzt die Implementierung eines anderen DienstesBeispiel:
Anwendungen
Zusätzlich zu @JBland Antwort.
Anwendungsweite Gebietsschemaeinstellungen: -
Ein Beispiel finden Sie hier
Ändern des Standardverhaltens und der vorhandenen Implementierung eines Dienstes durch einen Winkeldienst: -
Ein Beispiel finden Sie hier
Schaltverhalten einer Funktion in verschiedenen Umgebungen.
quelle