1. Apa itu Pola Fasad
Pola Fasad adalah pola desain struktural yang menyediakan antarmuka bersatu untuk mengakses seperangkat antarmuka dalam sebuah subsistem. Pola ini menyembunyikan kompleksitas dari subsistem dan menyediakan antarmuka yang disederhanakan ke luar.
2. Karakteristik dan Kelebihan Pola Fasad
Pola Fasad memiliki karakteristik dan kelebihan berikut:
- Ini menyediakan antarmuka yang disederhanakan, membuat subsistem lebih mudah digunakan.
- Ini mengurangi keterkaitan antara klien dan subsistem. Klien hanya perlu berinteraksi dengan kelas fasad tanpa perlu memahami detail implementasi spesifik dari subsistem.
- Ini sesuai dengan Prinsip Terbuka/Tertutup dan memungkinkan penambahan atau modifikasi fungsionalitas secara nyaman dalam subsistem.
3. Contoh Aplikasi Praktis dari Pola Fasad
Pola Fasad memiliki beragam aplikasi praktis dalam pengembangan, seperti:
- Menyediakan antarmuka yang disederhanakan untuk mengakses pustaka atau API pihak ketiga yang kompleks.
- Mengkapsulasi serangkaian operasi logika kompleks untuk menyederhanakan proses panggilan klien.
- Menyediakan antarmuka sederhana untuk sistem yang ada agar dapat terintegrasi dengan sistem lain.
4. Implementasi Pola Fasad dalam Golang
4.1. Diagram Kelas UML
4.2. Pengantar Contoh
Dalam contoh ini, mari kita asumsikan ada platform e-commerce yang mencakup manajemen pesanan, manajemen inventaris, dan sistem pembayaran. Sistem manajemen pesanan bertanggung jawab atas fungsi-fungsi seperti membuat pesanan dan meminta informasi pesanan, sistem manajemen inventaris bertanggung jawab atas mencari inventaris produk dan mengurangi inventaris, dan sistem pembayaran bertanggung jawab atas memproses pembayaran pesanan. Untuk menyederhanakan interaksi antara klien dan subsistem, kita dapat menggunakan Pola Fasad untuk mendesain antarmuka dari subsistem-subsystem ini.
4.3. Langkah Implementasi 1: Mendefinisikan Kelas Fasad
type Fasad struct {
subsistemA *SubsistemA
subsistemB *SubsistemB
subsistemC *SubsistemC
}
func NewFasad() *Fasad {
return &Fasad{
subsistemA: NewSubsistemA(),
subsistemB: NewSubsistemB(),
subsistemC: NewSubsistemC(),
}
}
func (f *Fasad) Operasi() {
f.subsistemA.OperasiA()
f.subsistemB.OperasiB()
f.subsistemC.OperasiC()
}
4.4. Langkah Implementasi 2: Mendefinisikan Kelas Subsistem
type SubsistemA struct {}
func NewSubsistemA() *SubsistemA {
return &SubsistemA{}
}
func (s *SubsistemA) OperasiA() {
// Logika untuk operasi Subsistem A
}
type SubsistemB struct {}
func NewSubsistemB() *SubsistemB {
return &SubsistemB{}
}
func (s *SubsistemB) OperasiB() {
// Logika untuk operasi Subsistem B
}
type SubsistemC struct {}
func NewSubsistemC() *SubsistemC {
return &SubsistemC{}
}
func (s *SubsistemC) OperasiC() {
// Logika untuk operasi Subsistem C
}
4.5. Langkah Implementasi 3: Mengimplementasikan Kode Klien Menggunakan Pola Fasad
func main() {
fasad := NewFasad()
fasad.Operasi()
}