Creational Design Pattern: Factory – Part 4

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.
Sharing is caring:

Leave a Comment