0Pricing
Java Academy · Pelajaran

Pola Factory Method

Definisikan metode pabrik di class dasar dan biarkan subclass menentukan produk yang akan dibuat.

Pola Factory Method adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 Metode Pabrik

Metode Pabrik mendefinisikan antarmuka untuk membuat objek, tetapi membiarkan subkelas menentukan kelas yang akan dibuat. Metode ini memisahkan logika pembuatan dari kode klien.

Masalah Tanpa Metode Pabrik

Tanpa pabrik, kode klien dipenuhi pemanggilan new ConcreteClass(). Menambahkan varian baru berarti mengubah setiap lokasi pemanggilan — pelanggaran terhadap Prinsip Terbuka/Tertutup.

// 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.

Kelas Abstrak Pembuat

Definisikan kelas abstrak pembuat dengan metode pabrik createProduct(). Subkelas menimpanya untuk mengembalikan tipe produk tertentu.

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

Pembuat Konkret

Setiap subkelas menimpa metode pabrik untuk mengembalikan produk yang sesuai tanpa mengubah algoritme di sekelilingnya pada kelas dasar.

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

Antarmuka Produk

Semua produk konkret mengimplementasikan antarmuka umum agar pembuat dapat menggunakannya secara generik.

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"); }
}

Metode Pabrik Statis vs Pola Metode Pabrik

Metode pabrik statis, misalnya LocalDate.of(), adalah konvensi penamaan, bukan pola GoF. Pola GoF menggunakan pewarisan; pabrik statis menggunakan metode statis pada satu kelas.

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

Metode Pabrik Berparameter

Berikan parameter kepada metode pabrik untuk memilih salah satu dari beberapa produk tanpa memerlukan satu subkelas untuk setiap produk.

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);
        };
    }
}

Metode Pabrik dengan Generik

Gunakan generik agar metode pabrik aman terhadap tipe dan dapat digunakan kembali pada berbagai keluarga produk.

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

Mendaftarkan Pabrik dengan Peta

Pabrik berbasis registri menyimpan peta string tipe ke lambda Supplier, sehingga menghindari rangkaian if-else dan memungkinkan pendaftaran secara dinamis.

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();

Metode Pabrik vs Pabrik Abstrak

Metode Pabrik membuat satu tipe produk melalui pewarisan. Pabrik Abstrak membuat keluarga produk yang saling terkait melalui komposisi. Gunakan Metode Pabrik ketika satu produk bervariasi; gunakan Pabrik Abstrak ketika seluruh rangkaian produk bervariasi bersama-sama.

Contoh Dunia Nyata: Pabrik Pencatat

LoggerFactory.getLogger(Class) milik SLF4J adalah pabrik statis yang mengembalikan implementasi pencatat yang tepat, yaitu Logback, Log4j, atau JUL, tanpa perlu mengetahui implementasi mana yang digunakan.

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

Pemeriksaan Singkat

Apa karakteristik utama pola Metode Pabrik?

Ringkasan

Metode Pabrik memisahkan pembuatan objek dari klien dengan menempatkan keputusan pembuatan dalam metode subkelas yang dapat ditimpa. Gunakan pola ini ketika sebuah kelas tidak dapat memperkirakan objek mana yang perlu dibuatnya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pola Factory Method” gratis?

Ya — teks lengkap “Pola Factory Method” 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 “Pola Factory Method”?

Definisikan metode pabrik di class dasar dan biarkan subclass menentukan produk yang akan dibuat. 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 2 dari 4.

Berapa lama pelajaran “Pola Factory Method” 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

  1. Singleton: Implementasi Aman bagi Thread
  2. Pola Factory Method
  3. Abstract Factory untuk Keluarga Produk
  4. Pola Builder dengan API Fluent
← Kembali ke Java Academy