AngularJS
Distinguishing Service vs Factory
Sök…
Factory VS Service en gång för alla
Per definition:
Tjänsterna är i grunden konstruktorfunktioner. De använder "detta" nyckelord.
Fabriker är enkla funktioner därmed returnerar ett objekt.
Under huven:
Fabriker anropar intern leverantörsfunktion.
Tjänster internt samtal Factory funktion.
Debatt:
Fabriker kan köra kod innan vi returnerar vårt objekt bokstavligt.
Men samtidigt kan tjänster också skrivas för att returnera ett bokstavligt objekt och för att köra kod innan de returneras. Även om det är kontraproduktivt eftersom tjänster är utformade för att fungera som konstruktörsfunktion.
Faktum är att konstruktörsfunktioner i JavaScript kan returnera vad de vill.
Så vilken är bättre?
Konstruktorsyntaxen för tjänster är mer nära klasssyntaxen för ES6. Så migrering blir lätt.
Sammanfattning
Så i sammandrag är leverantör, fabrik och tjänst alla leverantörer.
En fabrik är ett speciellt fall av en leverantör när allt du behöver i din leverantör är en $ get () -funktion. Det låter dig skriva det med mindre kod.
En tjänst är ett speciellt fall av en fabrik när du vill returnera en instans av ett nytt objekt, med samma fördel med att skriva mindre kod.