AngularJS: Kiedy korzystać z usługi zamiast z fabryki
Proszę, przynieś mnie tutaj. Wiem, że są inne odpowiedzi, takie jak:AngularJS: Service vs provider vs factory
Jednak wciąż nie mogę się domyślić, kiedy korzystasz z usług fabrycznych.
Z tego, co mogę powiedzieć, fabryka jest powszechnie używana do tworzenia „wspólnych” funkcji, które mogą być wywoływane przez wiele kontrolerów:Tworzenie wspólnych funkcji kontrolera
Dokumenty Angulara wydają się preferować obsługę fabryczną. Odwołują się nawet do „usługi”, gdy korzystają z fabryki, która jest jeszcze bardziej myląca!http://docs.angularjs.org/guide/dev_guide.services.creating_services
Kiedy więc skorzystasz z usługi?
Czy jest coś, co jest możliwe lub łatwiejsze w obsłudze?
Czy za kulisami dzieje się coś innego? Różnice wydajności / pamięci?
Oto przykład. Inne niż metoda deklaracji, wydają się identyczne i nie mogę zrozumieć, dlaczego zrobiłbym jeden przeciwko drugiemu.http://jsfiddle.net/uEpkE/
Aktualizacja: Z odpowiedzi Thomasa wynika, że usługa jest prostszą logiką i fabryką dla bardziej złożonej logiki z prywatnymi metodami, więc zaktualizowałem kod fiddle poniżej i wydaje się, że oba są w stanie obsługiwać prywatne funkcje?
myApp.factory('fooFactory', function() {
var fooVar;
var addHi = function(foo){ fooVar = 'Hi '+foo; }
return {
setFoobar: function(foo){
addHi(foo);
},
getFoobar:function(){
return fooVar;
}
};
});
myApp.service('fooService', function() {
var fooVar;
var addHi = function(foo){ fooVar = 'Hi '+foo;}
this.setFoobar = function(foo){
addHi(foo);
}
this.getFoobar = function(){
return fooVar;
}
});
function MyCtrl($scope, fooService, fooFactory) {
fooFactory.setFoobar("fooFactory");
fooService.setFoobar("fooService");
//foobars = "Hi fooFactory, Hi fooService"
$scope.foobars = [
fooFactory.getFoobar(),
fooService.getFoobar()
];
}