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
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:
Menyediakan fungsi khusus (factory function) untuk membuat objek
Mengembalikan interface bukan struct konkret
Menyembunyikan detail implementasi dari kode yang menggunakan objek
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