Koray PEKER
Menu
  • Anasayfa
  • Kütüphane
  • Kategoriler
    • Java
    • Spring
    • Tasarım Şablonları
    • Git
    • Maven
    • ORM Çatıları
    • VCS
    • SDLC
    • DevOps
    • Algoritma
    • Eğitim
    • Diğer
  • Hakkımda
Menu

Fabrika (Factory) Tasarım Şablonu

15 Temmuz 201821 Ekim 2018 tarihinde yayımlandı

Oluşturucu (Creational) tasarım şablonlarından biridir. Spring ve Struts gibi çerçevelerde yaygın olarak kullanılmaktadır.

Fabrika şablonu, birden fazla alt-sınıf ve süper sınıfa sahip olduğumuzda kullanılır. Kullanıcı sınıf, hangi alt sınıfların kullanılması gerektiğini veya nasıl nesne üretilmesi geretiğin bilmiyorsa bu tasarım şablonunu kullanmak en uygunu olacaktır. Bu kalıp, bir sınıfın istemci tarafından fabrika sınıfına örneklenmesinin sorumluluğunu üstlenir.

Bu modelde süper sınıf bir interface(arayüz), abstract(soyut) sınıf veya normal bir somut sınıf olabilir. Örneğimiz için, test amaçlı olarak doküman tiplerini döndüren yöntemiyle bir interface var.

public interface Document {

    public String getDocumentType();

}

Şimdi bu interface’i implement eden alt sınıflarımızı oluşturalım.

public class Pdf implements Document {

    @Override
    public String getDocumentType() {
        return "Pdf";
    }

}
public class Word implements Document {
    
    @Override
    public String getDocumentType() {
        return "Word";
    }
    
}

Artık süper sınıflarımız ve alt sınıflarımız hazır, şimdi fabrika sınıfımızı yazabiliriz.

public class DocumentFactory {

    public static Document createDocument(String type){

        if("PDF".equals(type)){
            return new Pdf();
        } else if("WORD".equals(type)){
            return new Word();
        } else {
            throw new RuntimeException("Doküman tipi belli değil!");
        }
    }
}

Test sınıfımız ile uygulamamızı test edebiliriz. Artık DocumentFactory sınıfı gönderilen parametreyi değerlendirerek, gerekli soyut sınıfı bulur ve doküman nesnesini üretir.

public class TestFactory {

    public static void main(String[] args) {
        Document document = DocumentFactory.createDocument("PDF");
        System.out.println(document.getDocumentType());

        document = DocumentFactory.createDocument("WORD");
        System.out.println(document.getDocumentType());
    }
}

JDK’ da örnekleri

  • java.util.Calendar, ResourceBundle ve NumberFormat.getInstance() metodu
  • Nesnelerdeki valueOf() metodu

2 yorum yapıldı “Fabrika (Factory) Tasarım Şablonu”

  1. Geri bildirim: Oluşturucu Şablonları(Creational Pattern) | Koray PEKER
  2. Elif dedi ki:
    4 Aralık 2018, 10:01

    Ellerine sağlık, çok faydalı.

    Cevapla

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ara

Son Yazılar

  • Apache Kafka
  • Postman API’ları Görselleştirme
  • MongoDB Cheat Sheet
  • Splunk 101 – Giriş
  • Yük Testi ve SoapUI
  • Modern Veri Tabanları
  • Senior Stajyer ?!
  • API Dokümantasyon Önemi ve Swagger
  • Kod Tekrarı(Code Duplication) ve DRY
  • Yapılacaklar : Kitap OKU

TAKİP ET

Koray PEKER
©2021 Koray PEKER