Factory Pattern

Apa Itu Factory Pattern?

Factory Pattern pada dasarnya adalah cara untuk membuat objek tanpa harus mengetahui secara detail bagaimana objek tersebut dibuat. Bayangkan seperti ini:

  • Anda tidak perlu tahu cara membuat mobil dari nol

  • Anda hanya perlu pergi ke dealer dan mengatakan "saya mau mobil"

  • Dealer (factory) akan membuatkan mobil untuk Anda

Dalam pemrograman, Factory Pattern melakukan hal yang sama: menyediakan fungsi khusus (factory function) yang akan membuat objek untuk kita.

Contoh Analogi Dunia Nyata

Tanpa Factory Pattern:

// Kita harus tahu cara membuat setiap objek secara manual
func main() {
    // Harus tahu detail cara membuat mobil
    car := Car{model: "Toyota", year: 2023}
    
    // Harus tahu detail cara membuat motor
    bike := Bike{type: "Sport", cc: 150}
}

Dengan Factory Pattern:

Konsep Inti Factory Pattern di Go

Di Go, Factory Pattern memiliki 3 konsep penting:

1. Interface (Kontrak)

Ini adalah "kontrak" yang menjamin semua kendaraan punya method Move().

2. Implementasi Konkret

Ini adalah implementasi spesifik dari interface.

3. Factory Function (Pabrik)

Ini adalah "pabrik" yang membuat objek sesuai permintaan.

Mengapa Ini Berguna?

1. Enkapsulasi Logika Pembuatan

2. Fleksibilitas dalam Mengganti Implementasi

3. Memudahkan Testing

Perbandingan dengan Terminologi OOP Tradisional

Istilah OOP tradisional
Ekuivalen di Go

Superclass

Interface

Subclass

Struct yang mengimplementasi interface

Method overriding

Implementasi method pada struct

Constructor

Factory function

Kesimpulan

Factory Pattern di Go bukan tentang "subclass yang mengubah tipe objek", melainkan tentang:

  1. Menyediakan fungsi khusus (factory function) untuk membuat objek

  2. Mengembalikan interface bukan struct konkret

  3. Menyembunyikan detail implementasi dari kode yang menggunakan objek

  4. Memungkinkan perubahan implementasi tanpa mengubah kode client

Ini membuat kode lebih:

  • Modular: Logika pembuatan terpisah dari penggunaan

  • Fleksibel: Mudah mengganti implementasi

  • Testable: Mudah membuat mock untuk testing

  • Mudah dipahami: Kode client lebih sederhana

Dengan Factory Pattern, kita bisa fokus pada "apa" yang kita butuhkan (mobil, motor, dll) tanpa perlu pusing dengan "bagaimana" cara membuatnya.

Last updated