1. Apa itu Pola Jembatan
1.1 Definisi dan Konsep
Pola Jembatan, juga dikenal sebagai pola Bridge, merupakan jenis pola desain struktural yang memisahkan abstraksi dan implementasinya, memungkinkan keduanya bervariasi secara independen. Dengan kata lain, Pola Jembatan adalah solusi yang memisahkan abstraksi dari implementasinya.
1.2 Tujuan dan Efek dari Pola Jembatan
Tujuan utama dari Pola Jembatan adalah untuk memisahkan bagian abstraksi dari bagian implementasinya sehingga keduanya dapat berubah dan berkembang secara independen. Hal ini dicapai dengan mendefinisikan kelas jembatan abstrak yang terhubung dengan kelas implementasi konkret.
2. Karakteristik dan Kelebihan dari Pola Jembatan
Beberapa karakteristik dan kelebihan utama dari Pola Jembatan meliputi:
- Skalabilitas sistem yang ditingkatkan. Baik abstraksi maupun implementasi dapat diperluas secara independen tanpa saling memengaruhi.
- Kepatuhan terhadap Prinsip Terbuka/Tertutup. Bagian abstraksi dan implementasi dapat diperluas secara independen tanpa saling memengaruhi.
- Transparansi detail implementasi kepada klien, memungkinkan penyembunyian detail implementasi dari pengguna.
3. Skenario Aplikasi dari Pola Jembatan
- Ketika Anda ingin memisahkan implementasi objek kompleks dari abstraksinya, Pola Jembatan dapat digunakan. Hal ini dapat berdampak positif pada kinerja kode yang sudah ada, terutama ketika program hanya menggunakan bagian dari objek saat runtime.
- Ketika Anda perlu berbagi status implementasi spesifik di antara beberapa objek, namun bagi kode klien, objek-objek tersebut perlu tampak sebagai kelas-kelas independen.
4. Implementasi Pola Jembatan di Golang
4.1 Pengantar ke Diagram Kelas UML
4.2 Langkah-langkah Implementasi Detail
4.2.1 Mendefinisikan Antarmuka Peran Abstrak
Pertama, kita mendefinisikan antarmuka DrawAPI, kode spesifiknya adalah sebagai berikut:
// Antarmuka peran abstrak
type DrawAPI interface {
DrawACircle(radius, x, y int)
}
4.2.2 Mengimplementasikan Kelas Peran Konkret
Kemudian, kita mendefinisikan dua kelas, RedCircle dan BlueCircle, yang mengimplementasikan metode dalam antarmuka DrawAPI:
// Kelas peran konkret
type RedCircle struct {}
func (c *RedCircle) DrawACircle(radius, x, y int) {
// logika menggambar lingkaran merah
}
type BlueCircle struct {}
func (c *BlueCircle) DrawACircle(radius, x, y int) {
// logika menggambar lingkaran biru
}
4.2.3 Mendefinisikan Antarmuka Jembatan Abstrak
Mendefinisikan antarmuka jembatan Shape:
// Antarmuka jembatan abstrak
type Shape interface {
Draw()
}
4.2.4 Mengimplementasikan Kelas Jembatan Konkret
Mengimplementasikan kelas Circle, yang mengimplementasikan antarmuka Shape dan berisi objek dari jenis antarmuka DrawAPI:
// Kelas jembatan konkret
type Circle struct {
x, y, radius int
drawAPI DrawAPI
}
func (c *Circle) Draw() {
c.drawAPI.DrawACircle(c.radius, c.x, c.y)
}
4.2.5 Contoh Panggilan Klien
func main() {
redCircle := &Circle{100, 100, 10, new(RedCircle)}
blueCircle := &Circle{100, 100, 10, new(BlueCircle)}
redCircle.Draw()
blueCircle.Draw()
}
Dengan cara ini, kita telah mengimplementasikan pola Jembatan di Golang.