CodeBlanks Logo Icon CodeBlanks

Factory deseni

JavaScript kursu · Uzman · Ders 3/63

Nesne oluşturma mantığını ayrı bir fabrika fonksiyonuna taşıyan deseni öğrenirsin.

Factory deseni

Factory deseni, nesne oluşturma mantığını ayrı bir fabrika fonksiyonuna taşır. Çağıran kod hangi nesnenin üretileceğini bilmez; yalnızca bir parametre verir ve sonuç alır.

Bu, kodu daha esnek hale getirir. Yeni bir nesne türü eklemek için fabrikayı değiştirmen yeter; çağıran taraf aynı kalır.

Sınıf yerine nesne üreten bir fonksiyon yazmak JS'te oldukça yaygındır.

Fabrika fonksiyonu örneği

Aşağıdaki fabrika, type parametresine göre düğme nesneleri üretir. Çağıran kod yalnızca createButton('primary', 'Kaydet') yazar; üretim ayrıntıları fabrikada kalır.

function createButton(type, label) {
  return { label: label, kind: type };
}

Bu desen, özellikle çok sayıda benzer nesne türü olduğunda işe yarar.

Uygulama createButton fabrikası

createButton(type, label) fabrika fonksiyonunu yaz. Döndürdüğü nesnede label özelliği label değerine eşit olsun ve render() yöntemi label döndürsün. type 'primary' ise button.kind = 'primary' ata. Son olarak button nesnesini döndür.

Örnek çözümü göster
label, render() { return label; } } yap, type 'primary' ise button.kind = 'primary' ata, en son return button.
Örnek çözüm:
function createButton(type, label) {
  const button = {
    label: label,
    render() {
      return label;
    }
  };
  if (type === 'primary') {
    button.kind = 'primary';
  }
  return button;
}

Kendini test et

  1. Factory deseninin sağladığı avantaj nedir?

    • Nesneleri daha hızlı sıralar
    • Belleği otomatik temizler
    • Nesne oluşturma mantığını çağrıdan ayırır
    • Sınıfları kalıtım yapar
    Cevabı göster

    Nesne oluşturma mantığını çağrıdan ayırır — Doğru! Factory, oluşturma mantığını fabrika fonksiyonuna taşır.

  2. Fabrika dönüşünü tamamla

    function createButton(label) {
      return { label: label, ____() { return label; } };
    }
    Cevabı göster
    function createButton(label) {
      return { label: label, render() { return label; } };
    }
  3. Factory kavramlarını eşleştir

    Factory
    Nesne oluşturmayı ayırır
    createButton()
    Fabrika fonksiyonu
    type parametresi
    Hangi türü yapacağını söyler
    return {}
    Yeni nesne döndürür

Uzman bölümündeki tüm dersler