Factory Method Design Pattern Nedir?

Kürşat Öztürk
2 min readJan 29, 2024

Nesne odaklı programlamada, nesne oluşturma işlemini soyutlamak ve esneklik sağlamak için kullanılan bir kalıptır. Amacı, hangi nesnenin oluşturulacağını kod içinde açıkça belirtmek yerine, bir factory method aracılığıyla kararlaştırmaktır. Bu sayede, farklı nesne türleri kolayca eklenebilir veya değiştirilebilir ve kod daha bakımı kolay hale gelir.

Factory Method Pattern Temel Özellikleri

  • Factory Method: Nesne oluşturma logic’sinin bulunduğu bir yöntemdir. Bu yöntem genellikle soyut sınıf veya arayüzde tanımlanır.
  • Alt Sınıflar(Subclasses): Soyut sınıf veya arayüzü miras alan alt sınıflar, kendilerine ait nesne oluşturma logic’sini fabrika yöntemini yeniden yazarak belirlerler.
  • Client: Factory Method’u çağırarak nesne oluşturan kod bölümüdür. Client, hangi alt sınıfın factory method’ın kullanılacağını bilmez ve sadece soyut sınıf veya arayüz referansı ile çalışır.

Factory Method Pattern Faydaları

  • Esneklik: Yeni nesne türleri eklemek veya var olanları değiştirmek kolaydır.
  • Kodun Daha Bakılabilir Olması: Nesne oluşturma logic’i tek bir yerde toplanır ve yeniden kullanılabilir.
  • Bağımlılık Yönetimi: Client, hangi nesne türünün oluşturulacağını bilmediği için, alt sınıfların detaylarına bağlı değildir.

Dart dilinde, Factory Method Pattern’i uygulamak için, öncelikle bir soyut sınıf veya arayüz tanımlamamız gerekir. Bu sınıf veya arayüz, nesne oluşturma logic’ini içerecektir.

Bu örnekte, “Enemy” soyut sınıfı, düşman nesnelerinin ortak özelliklerini tanımlar. “createEnemy()” fabrika yöntemi, hangi düşman türünün oluşturulacağını belirlemek için kullanılır.

Ardından, soyut sınıf veya arayüzü miras alan alt sınıfları tanımlamamız gerekir. Bu alt sınıflar, fabrika yöntemini yeniden yazarak kendilerine ait nesne oluşturma logic’ini belirleyebilirler.

Bu örnekte, “OrcEnemy” ve “TrollEnemy” alt sınıfları, “Enemy” soyut sınıfından miras alırlar. Her iki alt sınıf da “createEnemy()” factory method’unu yeniden yazarak kendi düşman türlerini oluşturur.

Son olarak da client kodunu yazmamız gerekir. Bu kod, factory method’u çağırarak nesne oluşturur.

Bu örnekte, “main()” fonksiyonu, “Enemy.createEnemy()” fabrika yöntemini çağırır. Bu yöntem, “OrcEnemy” alt sınıfını döndürür. Bu nedenle, “enemy” değişkeni bir “OrcEnemy” nesnesi olur.

/// Output

100
20

Bu çıktı, “OrcEnemy” sınıfının bir nesnesi oluşturulduğunu gösterir.

Sonuç olarak Factory Method Pattern, nesne oluşturma işlemini soyutlayarak ve esneklik sağlayarak kodunuzu daha bakımı kolay ve yeniden kullanılabilir hale getirebilir.

--

--