Lütfen benimle burada kal. Bunun gibi başka cevaplar olduğunu biliyorum: AngularJS: Servis vs sağlayıcı vs fabrika
Ancak hizmeti fabrikada ne zaman kullanacağınızı hala anlayamıyorum.
Fabrikadan anlatabildiğim kadarıyla, birden fazla Denetleyici tarafından çağrılabilen "ortak" işlevler oluşturmak için yaygın olarak kullanılır: Ortak denetleyici işlevleri oluşturma
Açısal dokümanlar fabrika hizmetini tercih ediyor gibi görünüyor. Hatta daha da kafa karıştırıcı fabrika kullandıklarında "hizmet" anlamına gelir!http://docs.angularjs.org/guide/dev_guide.services.creating_services
Peki hizmet ne zaman kullanılır?
Hizmetle yapılabilecek veya daha kolay yapılabilecek bir şey var mı?
Perde arkasında farklı bir şey var mı? Performans / bellek farklılıkları?
İşte bir örnek. Deklarasyon yöntemi dışında, aynı görünüyorlar ve neden birini diğerine karşı yapacağımı anlayamıyorum. http://jsfiddle.net/uEpkE/
Güncelleme: Thomas'ın cevabından, hizmetin daha basit mantık ve fabrika için özel yöntemlerle daha karmaşık mantık için olduğunu ima ediyor gibi görünüyor, bu yüzden aşağıdaki keman kodunu güncelledim ve her ikisi de özel işlevleri destekleyebiliyor gibi görünüyor mu?
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()
];
}