Wayan Jimmy's Brain

Builder pattern in Golang

related
Golang

Sebuah pattern yg digunakan untuk mengkontruksi sesuatu, bisa sebuah string, struct ataupun closure.

Builder pattern cocok digunakan untuk mengkontruksi objek yang kompleks, jadi untuk menghindari bug yang terjadi saat proses kontruksi, dipecah jadi method method yang lebih mudah untuk digunakan.

Contoh Builder Pattern

type Employee struct {
	Name string
	Role string
	MinSalary int
	MaxSalary int
}

Jika langsung melakukan kontruksi melalui struct diatas kita bisa saja lakukan dengan inisialisasi struct baru tersebut dan lakukan pengisian nilai ke masing-masing properti-nya.

e := Employee{}
e.Name = "jimmy"

Namun kadang keperluan kita tidak sesederhana contoh diatas. Kadang ada kepentingan jika properti Role diisi nilai tetentu, kita ingin properti MinSalary atau MaxSalary diisi juga dengan nilai tertentu

type Builder struct {
	e Employee
}

func (b *Builder) Build() Employee {
	return b.e
}

func (b *Builder) Name(name string) *Builder {
	b.e.Name = name
	return b
}

func (b *Builder) Role(role string) *Builder {
	if role == "manager" {
		b.e.MinSalary = 20000
		b.e.MaxSalary = 60000
	}
	b.e.Role = role
}

// cara mengkonstruksi struct Employee dengan Builder

b := &Builder{}
employee := b.
	Name("Jimmy").
	Role("manager").
	Build()

fmt.Println(employee)