2014-09-30 3 views
5

In den meisten Beispielen, die ich von den Dienstleistungen in angularJs finde finde ich, dass der Service wirklich eine Fabrik ist. zBIn AngularJS warum ist Konvention, einen Fabrikservice zu benennen

angular.module('myModule').factory('customerService', [ 
     '$http', 
     function ($http) { 
      return { 

       get: function() { 
        return doSomeStuff(); 
       } 
      }; 
     } 
    ]); 

Der Autor hat eine Fabrik erstellt, sondern nannte es Kunden Service statt customerFactory. Warum ist das? Gibt es ein Stigma gegen Fabriken oder sind angular services so super-cool, dass jeder ein großes Lob für das Schreiben wünscht, auch wenn sie es nicht tun.

Um für jeden, der dies beantwortet, klar zu sein, frage ich nicht nach den Verdiensten von Fabriken oder Dienstleistungen. Ich frage, warum die eckige Gemeinschaft ihre Objekte absichtlich falsch benennt.

+0

Ich denke, die 'factory' Name der Art und Weise verwandt ist der Dienst instanziiert wird. –

+0

Mögliches Duplikat ?? gib nach! Ich habe ausdrücklich gesagt, dass ich nicht für vergleichende Verdienste frage – Twisted

Antwort

1

Obwohl der von Ihnen gepostete Code tatsächlich eine Service Factory registriert, ist der erste Parameter von $ provide.factory() der Name des Service instance (Dienste sind Singletons). Dieser Name wird vom $ injector verwendet, um zu ermitteln, welche Factory aufgerufen wird, wenn Sie eine Abhängigkeit vom Service deklarieren. Mehr Infos hier:

https://docs.angularjs.org/api/auto/service/$provide

2

Factory ist der grundlegendste Anbieter, mit dem Sie beim Erstellen Ihrer Dienste externe Abhängigkeiten angeben können. Dies ist, was Angularjs Dokumentation über ihre Benennung sagt.

https://docs.angularjs.org/guide/providers

Best Practice: benennen Sie die Fabrik Funktionen wie Factory (z.B. apiTokenFactory). Diese Namenskonvention ist zwar nicht erforderlich, aber sie hilft beim Navigieren durch die Codebasis oder beim Betrachten von Stack-Traces im Debugger .

So ist es eine Entscheidung des Entwicklers, aber sicherlich nicht die empfohlene Methode.

+0

Wie Sie sagen, die Docs sagen Best Practice ist eine Fabrik eine Fabrik nennen. Doch die breitere Gemeinschaft ignoriert dies und nennt eine Fabrik einen Dienst. Warum? – Twisted

+2

Weil sie alle auf Dienste herunterkochen. Was '$ injector' erzeugt, wird als Service bezeichnet. Nur die Rezepte zum Erstellen eines Service unterscheiden sich wie _factory_ oder _provider_. Im wörtlichen Sinne ist es nicht falsch, es als Dienstleistung zu bezeichnen. Es liegt am Entwickler, es mit Service oder Factory zu ergänzen. – idursun

Verwandte Themen