AngularJS : servisi kullanmak için ne Zaman yerine fabrika
Lütfen burada benimle ayı. Diğer cevaplar böyle olduğunu biliyorum: Angular.js: service vs provider vs factory?
Ancak hala üzerinde fabrika servis kullanmak istiyorum zaman çözemedim.
Fabrika genel olarak "ortak" birden çok Denetleyicileri tarafından çağrılabilecek fonksiyonları: 3**. oluşturmak için kullanılır söyleyebilirim
Açısal docs üzerinden hizmet fabrika tercih gibi görünüyor. Hatta "fabrika kullandıklarında" bile daha kafa karıştırıcı. servise başvurun http://docs.angularjs.org/guide/dev_guide.services.creating_services
Bir hizmeti kullanmak istiyorsunuz?
Yalnızca Olası ya da hizmeti ile çok daha kolay yapılan bir şey var mı?
Perde arkasında olup biten farklı bir şey var mı? Performans/bellek farklar?
İşte size bir örnek. Beyan yöntemi dışında, aynı onlar gibi bir vs diğer yapardım neden olduğunu çözemedim. http://jsfiddle.net/uEpkE/
Güncelleme:Thomas'ın cevap gibi görünüyor ima bu hizmet için daha basit mantık ve fabrika için daha karmaşık mantık ile özel yöntem, yani güncelledim keman kod ve öyle görünüyor ki her ikisi de mümkün destek özel fonksiyonlar?
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()
];
}
CEVAP
Açıklama
Farklı şeyler var :
Ä°lk:
- Eğer hizmeti kullanıyorsanız alacakbir fonksiyon örneği("bu" anahtar kelime).
- Eğer bir fabrika kullanırsanız alırsınıztarafından döndürülen değeri işlevi referans çağırma(fabrika dönmek deyimi).
ref:angular.service vs angular.factory
Ä°kinci:
AngularJS (değer, sabit, hizmetleri, fabrikalar) sağlayıcıları tekiz hepsi unutmayın !
Üç:
Bir veya diğer (servis ya da fabrika) kod tarzı hakkında. Ama,ortak yolAngularJS içinde kullanmak içinfabrika.
Neden ?
Çünkü"Fabrika yöntemini AngularJS bağımlılık enjeksiyon sistemi nesneleri almanın en yaygın yolu vardır. Çok esnektir ve karmaşık oluşturma mantığı içerebilir. Fabrikalar normal fonksiyonları olduğu için, aynı zamanda "" değişkenler. özel benzetmek için yeni sözlü bir kapsam yararlanabiliriz Bu verilen hizmet uygulama ayrıntılarını gizlemek için çok yararlıdır."
(ref: http://www.amazon.com/Mastering-Web-Application-Development-AngularJS/dp/1782161821).
Kullanımı
Servis :Sadece ekleyerek çağırmak için yararlı işlevler paylaşımı için yararlı olabilir () enjekte edilen işlev başvurusu. Ayrıca çalıştırmak olabilir injectedArg.(bu) ya da benzer bir çağrı.
Fabrika :Bir ‘sınıf’ bundan sonra örneği oluşturmak için yeni çiğnenmiş olabilir fonksiyonu. döndürmek için yararlı olabilir
Yanikarmaşık mantık varsa, bir fabrika kullanınsize hizmet vebu karmaşıklığı göstermek istemiyorsun.
Diğer durumlardaeğer bir hizmetinin bir örneğini geri dönmek isterseniz, sadece servis kullanın.
Ama bence olguların € fabrika kullanacağınız zaman görürsünüz.
Daha fazla bilgi için : http://blog.manishchhabra.com/2013/09/angularjs-service-vs-factory-with-example/
GÃœNCELLEME :
Mükemmel bir yazı burada : http://iffycan.blogspot.com.ar/2013/05/angular-service-or-factory.html
Eğer fonksiyonu olmak istiyorsan "normal bir fonksiyon gibi kullanmak fabrika. Eğer işlev yeni bir örneği olmak istiyorsanız operatör, kullanım hizmeti. Eğer farkı bilmiyorsun bile, fabrika kullanın."
GÃœNCELLEME :
AngularJS ekip çalışması yapar ve bir açıklama : http://docs.angularjs.org/guide/providers
Ve bu sayfa :
"Fabrika ve Hizmet en sık kullanılan tarifler. Aralarındaki tek fark Servis tarifini Fabrika JavaScript temel öğeler ve fonksiyonları üretmek varken özel nesne türü için çalışır."
Soyut bir sınıf yerine bir arabirimi k...
Ne zaman TCP yerine UDP kullanmak için...
Bir Kurucu kullanmak için zaman ve get...
Ne zaman pozitif bir tablo kullanmak y...
Ne zaman ilişkisel bir veritabanı yeri...