Yapıcı işlevi, vs Fabrika fonksiyonları
Biri bir yapıcı işlevi ve Javascript fabrika fonksiyon arasındaki farkı açıklığa kavuşturmak için.
Diğerinin yerine kullanmak için ne zaman?
CEVAP
Temel fark, bir yapıcı işlevi kullanılır new
anahtar kelime (neden olan JavaScript için otomatik olarak yeni bir nesne, set this
işlev içinde bu nesne, dönen nesne):
var objFromConstructor = new ConstructorFunction();
Fabrika bir fonksiyon gibi denir "normal" fonksiyonu
var objFromFactory = factoryFunction();
Ama dikkat edilmesi gereken bir "fabrika" bunun için ne yapmalıyım yeni bir dönüş örneğinin bazı nesne: olmaz biz buna "fabrika" fonksiyonu ise sadece dönen bir boolean falan. Bu otomatik olarak new
gibi bir durum değil ama bazı durumlarda daha fazla esneklik izin vermiyor.
Çok basit bir örnek işlevleri yukarıda başvurulan böyle bir şey olabilir:
function ConstructorFunction() {
this.someProp1 = "1";
this.someProp2 = "2";
}
ConstructorFunction.prototype.someMethod = function() { /* whatever */ };
function factoryFunction() {
var obj = {
someProp1 : "1";
someProp2 : "2";
};
// other code to manipulate obj in some way here
return obj;
}
Elbette fabrika fonksiyonları basit bir örnek, çok daha karmaşık yapabilirsiniz.
Bazı insanlar tercih için kullanmak Fabrikası fonksiyonları için her şey çünkü onlar yokmuş gibi olması için hatırlamak için kullanın. new
(EDİT: ve bu bir sorun, çünkü olmadan new
çalışır yine çalışır ama değil beklendiği gibi). Ben görmüyorum gibi bir avantajı: new
temel bir parçası olan dil yani bana kasten kaçınarak biraz keyfi - belki de kaçının diğer anahtar sözcükler gibi else
.
Fabrika işlevleri için bir avantaj döndürülecek nesneyi birkaç farklı türde olabilir bazı parametrelere bağlıdır.
() kopya vs fabrika yöntemi yapıcı vs?...
Kopya yapıcı ve C = operatör aşırı yük...
Golang Mock fonksiyonları...
Nakavt Görünüm Modelleri arasındaki fa...
Nasıl düzgün-derleme bilgileri Haskell...