Abstract Factory untuk Keluarga Produk
Buat keluarga objek terkait (misalnya, komponen UI per platform) dengan Abstract Factory.
Abstract Factory untuk Keluarga Produk adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.
Tujuan Pabrik Abstrak
Pabrik Abstrak menyediakan antarmuka untuk membuat keluarga objek yang saling terkait tanpa menentukan kelas konkretnya. Pola ini memastikan bahwa produk dari satu pabrik tetap kompatibel.
Masalah: Keluarga Produk yang Tidak Konsisten
Tanpa Pabrik Abstrak, Anda mungkin mencampurkan tombol Windows dengan kotak centang Mac. Pola ini memastikan semua produk berasal dari pabrik yang sama, sehingga konsistensi visual atau perilaku tetap terjaga.
Antarmuka Pabrik Abstrak
Definisikan antarmuka dengan satu metode pembuatan untuk setiap produk dalam keluarga. Setiap pabrik konkret mengimplementasikan semua metode untuk satu varian.
public interface UIFactory {
Button createButton();
Checkbox createCheckbox();
TextField createTextField();
}Pabrik Konkret
Setiap pabrik konkret membuat semua produk untuk satu platform atau tema. Kode klien hanya merujuk pada antarmuka, bukan pabrik konkret.
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(); }
}Antarmuka Produk Abstrak
Setiap tipe produk memiliki antarmukanya sendiri. Produk konkret mengimplementasikan antarmuka tersebut untuk setiap platform. Kode klien bekerja dengan produk abstrak, bukan produk konkret.
public interface Button { void render(); void onClick(); }
public interface Checkbox { void render(); boolean isChecked(); }
public interface TextField { void render(); String getValue(); }Klien yang Menggunakan Pabrik
Klien menerima pabrik melalui konstruktornya. Klien memanggil metode pabrik untuk membuat komponen dan menggunakannya melalui antarmuka produk abstrak — sepenuhnya terpisah dari kelas konkret.
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();
}
}Memilih Pabrik Saat Berjalan
Pilih pabrik konkret berdasarkan lingkungan atau konfigurasi, lalu suntikkan pabrik tersebut. Bagian aplikasi lainnya tidak pernah menyebut kelas khusus platform.
String os = System.getProperty("os.name").toLowerCase();
UIFactory factory = os.contains("mac") ? new MacUIFactory() : new WindowsUIFactory();
new Application(factory).buildUI();Menambahkan Produk Baru ke Keluarga
Menambahkan produk baru, misalnya Slider, memerlukan pembaruan pada antarmuka pabrik abstrak dan semua pabrik konkret — ini merupakan kelemahan pola tersebut.
public interface UIFactory {
Button createButton();
Checkbox createCheckbox();
Slider createSlider(); // new product — must update ALL factories
}Pabrik Abstrak vs Metode Pabrik
Metode Pabrik membuat satu produk melalui pewarisan subkelas. Pabrik Abstrak membuat rangkaian produk melalui komposisi. Pabrik Abstrak biasanya diimplementasikan menggunakan sekumpulan Metode Pabrik.
Pabrik Abstrak untuk Pengandar Basis Data
Pabrik abstrak ConnectionFactory dapat menghasilkan objek Connection, Statement, dan ResultSet. Beralih antara MySQL dan PostgreSQL cukup dilakukan dengan mengganti pabriknya.
public interface DBFactory {
Connection createConnection();
Statement createStatement();
}
public class MySQLFactory implements DBFactory { ... }
public class PgFactory implements DBFactory { ... }Pabrik Abstrak dengan Profil Spring
Dalam Spring Boot, definisikan bean UIFactory secara berbeda untuk setiap profil: aplikasi selalu menyuntikkan UIFactory; Spring menentukan pabrik konkret yang sesuai untuk profil aktif.
@Configuration
@Profile("mac")
public class MacConfig {
@Bean UIFactory uiFactory() { return new MacUIFactory(); }
}Memastikan Konsistensi
Manfaat utamanya adalah pabrik hanya menghasilkan produk yang kompatibel. Saat menggunakan Pabrik Abstrak dengan benar, Anda tidak akan pernah secara tidak sengaja mendapatkan kotak centang Mac yang dipasangkan dengan tombol Windows.
Pemeriksaan Singkat
Apa yang dijamin oleh Pabrik Abstrak, tetapi tidak dijamin oleh Metode Pabrik?
Ringkasan
Pabrik Abstrak membuat keluarga objek yang saling terkait melalui antarmuka umum. Anda dapat mengganti seluruh keluarga produk dengan mengganti pabriknya. Pola ini paling sesuai ketika produk harus konsisten, tetapi menambah beban saat tipe produk baru ditambahkan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Abstract Factory untuk Keluarga Produk” gratis?
Ya — teks lengkap “Abstract Factory untuk Keluarga Produk” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Abstract Factory untuk Keluarga Produk”?
Buat keluarga objek terkait (misalnya, komponen UI per platform) dengan Abstract Factory. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Abstract Factory untuk Keluarga Produk” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Singleton: Implementasi Aman bagi Thread
- Pola Factory Method
- Abstract Factory untuk Keluarga Produk
- Pola Builder dengan API Fluent