SEPETTEKİ ÜRÜNLERİM
2 Ürün
İstanbul Eğitim Akademi Logo
Eğitimler
Abstract Factory

Creational Design Patterns

1. Abstract Factory

Abstract factory bir nesne oluşturma dizaynıdır. Yani bir grup ilgili nesnenin üretilmesinden sorumlu bir interface tanımlar.

Örnek üzerinde inceleyecek olursak;
Senaryomuza göre birden fazla yemek çeşidi bulunan bir lokanta düşünün.
Lokantada Türk Mutfağı, İtalyan Mutfağı yer alsın.
Her yöresel mutfak için bir adet Ana Yemek ve Salata çeşidi bulunsun.

Bunu kodsal olarak Abstract Factory Design Pattern ile kodlayacak olsaydık öncelikle yemek ve salata için birer
interface oluşturmamız gerekiyor.

Sonrasında bunları Abstract Factory Design ile kapsayacak genel bir interface eklememiz lazım.

Bunu mutfaklar için uygulayacak olursak öncelikle Türk Mutfağı için Ana Yemek ve Salata hazırlayabileceğimiz birer class oluşturmamız ve Interface metodunu implement etmemiz lazım.

Sonrasında bunları Abstract Factory Design ile kapsayacak genel bir class yazmamız lazım.

İtalyan mutfağı içinse aynı hazırlık yapılmalı

Sonrasında bunları Abstract Factory Design ile kapsayacak genel bir class yazmamız lazım.

Son olarak uygulamamızda bunu şöyle kullanmalıyız.

Örnekten de anlayacağımız üzere, birden fazla kez kullandığımız metotları/propertyleri farklı şekilde doldurmak için öncelikle Interface oluşturuyoruz sonrasında bunları ana çatı bir interface altında birleştiriyoruz ve işlemlerimize onu kullanarak devam ediyoruz.

    Artıları
  1. Kod bütünlüğü sağlanır. Metot içerisinde herhangi bir değişiklik yapıyı bozmaz. İstenildiği kadar çoğaltılabilir.
  2. Kod okunurluğu yüksektir.
  3. Projeye yeni katılan biri adapte olmakta zorluk çekmez.
    Eksileri
  1. Hazırlık aşamasında çok fazla kodlama yapıyoruz.
  2. Eğer bu tarz patternlara aşina değilseniz ya da ilk kez kullanıyorsanız size kodlar çok karmaşık gelebilir.
  3. Junior seviyesi için ağır bir kodlamadır.

Sonuç olarak gerekli durumlarda kullanabileceğimiz ama her zaman kullanmanın özellikle kod maliyeti açısından yüklü olacağı bir design patterndır.