Pada modul ini akan dibahas function prototype factory dengan kondisi diperlukan object yang mirip secara struktur. Contoh, data employee, terdapat data posisi dan data gaji berdasarkan posisi tersebut.
Pertama buat const yang berisi data posisi employee.
const (
Kasir = iota
Waiter
)
Kemudian buat fungsi prototype factory seperti berikut. Dengan fungsi prototype kita bisa melakukan construct object pre-configured, pada contoh, untuk posisi kasir, sudah terdapat gaji tahunan sebesar 60000 dan seterusnya.
func NewEmployee(role int) *Employee {
switch role {
case Kasir:
return &Employee{"", "Kasir", 60000}
case Waiter:
return &Employee{"", "Waiter", 80000}
default:
panic("posisi belum tersedia")
}
}
Dengan prototype factory kita bisa buat pre-configured object, untuk jelasnya lihat code berikut.
package main import "fmt" type Employee struct { Name, Position string AnnualIncome int } const ( Kasir = iota Waiter ) // prototype factory func NewEmployee(role int) *Employee { switch role { case Kasir: return &Employee{"", "Kasir", 60000} case Waiter: return &Employee{"", "Waiter", 80000} default: panic("posisi belum tersedia") } } func main() { m := NewEmployee(Kasir) m.Name = "Budi" fmt.Println(m) }
Kesimpulan
Setelah mengikuti keempat modul mengenai Factory function atau sering Constructor, dapat ditarik kesimpulan
- Factory function adalah fungsi helper untuk membuat instance struct atau dapat berupa function.
- Didalam factory function kita bisa lakukan banyak hal seperti validasi atau inisialisasi object yang lebih kompleks.