Ürün Aileleri için Abstract Factory
İlişkili nesne ailelerini (ör. platforma özgü kullanıcı arayüzü bileşenlerini) Abstract Factory ile oluşturun.
Ürün Aileleri için Abstract Factory, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 3. 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.
Soyut Fabrikanın Amacı
Soyut Fabrika, somut sınıflarını belirtmeden birbiriyle ilişkili nesne aileleri oluşturmak için bir arayüz sağlar. Bir fabrikadan çıkan ürünlerin uyumlu olmasını garanti eder.
Sorun: Tutarsız Ürün Aileleri
Soyut Fabrika olmadan bir Windows düğmesini Mac onay kutusuyla eşleştirebilirsiniz. Desen, tüm ürünlerin aynı fabrikadan gelmesini zorunlu kılarak görsel veya davranışsal tutarlılık sağlar.
Soyut Fabrika Arayüzü
Ailedeki her ürün için bir oluşturma metodu içeren bir arayüz tanımlayın. Her somut fabrika, bir varyantın tüm metotlarını uygular.
public interface UIFactory {
Button createButton();
Checkbox createCheckbox();
TextField createTextField();
}Somut Fabrikalar
Her somut fabrika, bir platform veya tema için gereken tüm ürünleri oluşturur. İstemci kodu somut fabrikalara değil, yalnızca arayüze başvurur.
public class WindowsUIFactory implements UIFactory {
public Button createButton() { return new WindowsButton(); }
public Checkbox createCheckbox() { return new WindowsCheckbox(); }
public TextField createTextField() { return new WindowsTextField(); }
}
public class MacUIFactory implements UIFactory {
public Button createButton() { return new MacButton(); }
public Checkbox createCheckbox() { return new MacCheckbox(); }
public TextField createTextField() { return new MacTextField(); }
}Soyut Ürün Arayüzleri
Her ürün türünün kendi arayüzü vardır. Somut ürünler bu arayüzü her platform için uygular. İstemci, somut ürüne değil soyut ürüne göre kodlanır.
public interface Button { void render(); void onClick(); }
public interface Checkbox { void render(); boolean isChecked(); }
public interface TextField { void render(); String getValue(); }Fabrikayı Kullanan İstemci
İstemci, fabrikayı yapıcısı aracılığıyla alır. Araç takımlarını oluşturmak için fabrika metotlarını çağırır ve bunları soyut ürün arayüzleri üzerinden kullanır — somut sınıflardan tamamen ayrıdır.
public class Application {
private final UIFactory factory;
public Application(UIFactory factory) { this.factory = factory; }
public void buildUI() {
Button btn = factory.createButton();
Checkbox cb = factory.createCheckbox();
btn.render();
cb.render();
}
}Fabrikayı Çalışma Zamanında Seçme
Somut fabrikayı ortama veya yapılandırmaya göre seçip içeri aktarın. Uygulamanın geri kalanında platforma özgü sınıflardan hiç söz edilmez.
String os = System.getProperty("os.name").toLowerCase();
UIFactory factory = os.contains("mac") ? new MacUIFactory() : new WindowsUIFactory();
new Application(factory).buildUI();Aileye Yeni Ürün Ekleme
Yeni bir ürün eklemek (örneğin Slider), soyut fabrika arayüzünün ve tüm somut fabrikaların güncellenmesini gerektirir — bu, desenin bir dezavantajıdır.
public interface UIFactory {
Button createButton();
Checkbox createCheckbox();
Slider createSlider(); // new product — must update ALL factories
}Soyut Fabrika ve Fabrika Metodu Karşılaştırması
Fabrika Metodu, alt sınıflara ayırma yoluyla tek bir ürün oluşturur. Soyut Fabrika, bileşim yoluyla bir ürün grubu oluşturur. Soyut Fabrika genellikle bir dizi Fabrika Metodu kullanılarak uygulanır.
Veritabanı Sürücüleri için Soyut Fabrika
Bir ConnectionFactory soyut fabrikası Connection, Statement ve ResultSet nesneleri üretebilir. Fabrikayı değiştirerek MySQL ile PostgreSQL arasında geçiş yapabilirsiniz.
public interface DBFactory {
Connection createConnection();
Statement createStatement();
}
public class MySQLFactory implements DBFactory { ... }
public class PgFactory implements DBFactory { ... }Spring Profilleriyle Soyut Fabrika
Spring Boot'ta her profil için bir UIFactory bileşenini farklı tanımlayın: uygulama her zaman UIFactory içeri aktarır; Spring etkin profil için doğru somut fabrikayı çözümler.
@Configuration
@Profile("mac")
public class MacConfig {
@Bean UIFactory uiFactory() { return new MacUIFactory(); }
}Tutarlılığı Sağlama
Temel fayda şudur: Bir fabrika yalnızca uyumlu ürünler üretir. Soyut Fabrikayı doğru kullandığınızda Mac onay kutusunu Windows düğmesiyle yanlışlıkla eşleştirmeniz mümkün değildir.
Kısa Kontrol
Soyut Fabrika, Fabrika Metodunun garanti etmediği neyi garanti eder?
Özet
Soyut Fabrika, ortak bir arayüz üzerinden birbiriyle ilişkili nesne aileleri oluşturur. Fabrikayı değiştirerek tüm ürün aileleri arasında geçiş yapabilirsiniz. Ürünlerin tutarlı olması gerektiğinde en uygunudur; ancak yeni ürün türleri eklenirken ek yük getirir.
Sıkça Sorulan Sorular
“Ürün Aileleri için Abstract Factory” dersi ücretsiz mi?
Evet — “Ürün Aileleri için Abstract Factory” 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.
“Ürün Aileleri için Abstract Factory” dersinde ne öğreneceğim?
İlişkili nesne ailelerini (ör. platforma özgü kullanıcı arayüzü bileşenlerini) Abstract Factory ile oluşturun. 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 3. dersidir.
“Ürün Aileleri için Abstract Factory” 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
- Singleton: İş Parçacığı Güvenli Uygulamalar
- Fabrika Yöntemi Kalıbı
- Ürün Aileleri için Abstract Factory
- Akıcı API ile Builder Kalıbı