AngularJS-Entwurfsmuster: Soll ich Fabriken verwenden, um Konstruktorfunktionen zu erstellen?

Dies ist etwas, worüber ich beim Erstellen einer AngularJS-App nachgedacht habe. Als ich zum ersten Mal etwas über AngularJS-Fabriken erfuhr, dachte ich, dass eine clevere Verwendung darin besteht, eine Konstruktorfunktion anstelle eines einfachen Objekts zu erstellen und zurückzugeben, d. H.

app.factory("Foo", function() {
  function Foo(bar, baz) {
    this.bar = bar;
    this.baz = baz;
    ...
  }

  Foo.prototype = {
    constructor: Foo,
    method1: function() { ... },
    method2: function() { ... },
    ...,
    methodn: function() { ... },
  };

  return Foo;
});

Dann können Sie die Funktion in Ihre Steuerungen einfügen und mit aufrufennew. Ich fand das ästhetisch ansprechend und OOP-y, aber jetzt beginne ich zu denken, dass es tatsächlich ein Anti-Pattern ist. Das Problem ist, dass es gut funktioniert, wenn Sie in AngularJS-fähigen Kontexten arbeiten, aber wenn Sie beispielsweise den Konstruktor von der Konsole aus aufrufen, ihn in einem Web Worker verwenden oder den Code in einem Nicht-AngularJS-fähigen Kontext wiederverwenden möchten. AngularJS App, müssen Sie anfangen zu arbeitenum AngularJS eher als mit. Ich begann mich zu fragen, ob dieser Ansatz insofern fehlgeleitet war, als Funktionen in Javascript bereits "Singletons" zu sein scheinen und keine Hilfe zu benötigen, die instanziiert werden könnte.

Missbrauche ich AngularJS-Fabriken? Wäre ich mit Konstruktorfunktionen, die dem globalen Bereich ausgesetzt sind, besser bedient? Gibt es allgemeiner bestimmte Faktoren, die die Nutzung von AngularJS-Fabriken / -Diensten / -Anbietern gegenüber globalen Objekten fördern oder umgekehrt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage