0Pricing
Java Academy · Ders

Fabrika Yöntemi Kalıbı

Bir temel sınıfta fabrika yöntemi tanımlayın ve hangi ürünün oluşturulacağına alt sınıfların karar vermesini sağlayın.

Fabrika Yöntemi Kalıbı, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.

Fabrika Metodu Deseninin Amacı

Fabrika Metodu, nesne oluşturmak için bir arayüz tanımlar; ancak hangi sınıfın örneklendirileceğine alt sınıfların karar vermesine izin verir. Oluşturma mantığını istemci kodundan ayırır.

Fabrika Metodu Olmadan Yaşanan Sorun

Fabrika olmadan istemci kodu new ConcreteClass() çağrılarıyla doldurulur. Yeni bir varyant eklemek, her çağrı noktasını değiştirmek anlamına gelir — bu da Açık/Kapalı İlkesinin ihlalidir.

// Client knows too much:
Shape shape;
if (type.equals("circle")) shape = new Circle(r);
else if (type.equals("rect")) shape = new Rectangle(w, h);
// Every new shape requires editing this code.

Soyut Oluşturucu Sınıfı

createProduct() fabrika metoduna sahip bir soyut oluşturucu sınıf tanımlayın. Alt sınıflar, belirli ürün türlerini döndürmek için bu metodu geçersiz kılar.

public abstract class Dialog {
    public void render() {
        Button btn = createButton(); // factory method
        btn.onClick();
    }
    protected abstract Button createButton();
}

Somut Oluşturucular

Her alt sınıf, temel sınıftaki çevreleyen algoritmayı değiştirmeden uygun ürünü döndürmek için fabrika metodunu geçersiz kılar.

public class WindowsDialog extends Dialog {
    @Override
    protected Button createButton() { return new WindowsButton(); }
}
public class WebDialog extends Dialog {
    @Override
    protected Button createButton() { return new HtmlButton(); }
}

Ürün Arayüzü

Tüm somut ürünler ortak bir arayüzü uygular; böylece oluşturucu bunlarla genel biçimde çalışabilir.

public interface Button {
    void onClick();
    void render();
}
public class WindowsButton implements Button {
    public void onClick() { System.out.println("Windows click"); }
    public void render() { System.out.println("Render Windows button"); }
}

Statik Fabrika Metotları ve Fabrika Metodu Deseni

Statik fabrika metodu (örneğin LocalDate.of()), GoF deseni değil, bir adlandırma kuralıdır. GoF deseni kalıtım kullanır; statik fabrikalar ise tek bir sınıftaki statik metotları kullanır.

// Static factory (NOT the GoF pattern)
LocalDate d = LocalDate.of(2024, 6, 15);
// GoF Factory Method uses a class hierarchy

Parametreli Fabrika Metodu

Her ürün için ayrı bir alt sınıf gerektirmeden çeşitli ürünler arasından seçim yapmak için fabrika metoduna bir parametre geçirin.

public class ShapeFactory {
    public static Shape create(String type, double... dims) {
        return switch (type) {
            case "circle"    -> new Circle(dims[0]);
            case "rectangle" -> new Rectangle(dims[0], dims[1]);
            default -> throw new IllegalArgumentException("Unknown: " + type);
        };
    }
}

Jeneriklerle Fabrika Metodu

Farklı ürün ailelerinde tür güvenli ve yeniden kullanılabilir bir fabrika metodu oluşturmak için jenerikleri kullanın.

public abstract class Repository<T, ID> {
    public abstract T findById(ID id);
    protected abstract T createEmpty(); // factory method
}

Fabrikaları Bir Eşleme ile Kaydetme

Kayıt defteri tabanlı bir fabrika, tür dizelerini Supplier lambda ifadeleriyle eşleyen bir eşleme depolar. Böylece if-else zincirlerinden kaçınılır ve kayıt işlemi dinamik hale gelir.

Map<String, Supplier<Notification>> registry = new HashMap<>();
registry.put("email", EmailNotification::new);
registry.put("sms",   SmsNotification::new);
Notification n = registry.getOrDefault(type, DefaultNotification::new).get();

Fabrika Metodu ve Soyut Fabrika Karşılaştırması

Fabrika Metodu, kalıtım yoluyla tek bir ürün türü oluşturur. Soyut Fabrika, bileşim yoluyla birbiriyle ilişkili ürün aileleri oluşturur. Tek bir ürün değişiyorsa Fabrika Metodunu, bütün bir ürün grubu birlikte değişiyorsa Soyut Fabrikayı kullanın.

Gerçek Dünya Örneği: Logger Fabrikası

SLF4J'nin LoggerFactory.getLogger(Class) metodu, çağıranın hangisi olduğunu bilmesine gerek kalmadan doğru günlükleyici uygulamasını (Logback, Log4j, JUL) döndüren statik bir fabrikadır.

Logger log = LoggerFactory.getLogger(MyService.class);
log.info("Service started");

Kısa Kontrol

Fabrika Metodu deseninin temel özelliği nedir?

Özet

Fabrika Metodu, örneklendirme kararını geçersiz kılınabilir alt sınıf metotlarına taşıyarak nesne oluşturmayı istemciden ayırır. Bir sınıfın hangi nesneleri oluşturması gerektiğini önceden belirleyemediği durumlarda kullanın.

Sıkça Sorulan Sorular

“Fabrika Yöntemi Kalıbı” dersi ücretsiz mi?

Evet — “Fabrika Yöntemi Kalıbı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.

“Fabrika Yöntemi Kalıbı” dersinde ne öğreneceğim?

Bir temel sınıfta fabrika yöntemi tanımlayın ve hangi ürünün oluşturulacağına alt sınıfların karar vermesini sağlayın. Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Java Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Fabrika Yöntemi Kalıbı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Singleton: İş Parçacığı Güvenli Uygulamalar
  2. Fabrika Yöntemi Kalıbı
  3. Ürün Aileleri için Abstract Factory
  4. Akıcı API ile Builder Kalıbı
← Java Academy Sayfasına Dön