1. Köprü Tasarım Deseni
1.1 Tanım ve Kavram
Köprü Tasarım Deseni, ayrım ve uygulama arasındaki bağı kopararak onları bağımsız bir şekilde değişebilmelerini sağlayan bir tür yapısal tasarım desenidir. Basitçe ifade etmek gerekirse, Köprü Tasarım Deseni, ayrımı uygulamadan ayıran bir çözümdür.
1.2 Köprü Tasarım Deseninin Amaçları ve Etkileri
Köprü Tasarım Deseninin ana amacı, ayrım bölümünü uygulama bölümünden ayırarak bağımsız bir şekilde değişmelerini ve genişlemelerini sağlamaktır. Bunun gerçekleştirilmesi, somut bir uygulama sınıfına bağlı soyut bir köprü sınıfı oluşturularak mümkün olur.
2. Köprü Tasarım Deseninin Özellikleri ve Avantajları
Köprü Tasarım Deseninin ana özellikleri ve avantajları şunları içerir:
- Geliştirilmiş sistem ölçeklenebilirliği. Hem ayrım hem de uygulama bağımsız olarak genişletilebilir, birbirlerini etkilemeden.
- Açık/Kapalı Prensibe uyumluluk. Ayrım bölümü ve uygulama bölümü bağımsız olarak genişletilebilir, birbirlerini etkilemeden.
- Uygulama ayrıntılarının istemciye şeffaflığı, kullanıcıdan uygulama ayrıntılarının gizlenmesine izin verir.
3. Köprü Tasarım Deseninin Uygulama Senaryoları
- Bir nesnenin uygulamasını ayrımından ayırmak istediğinizde, Köprü Tasarım Deseni kullanılabilir. Bu, özellikle programın çalışma zamanında nesnenin sadece bir kısmını kullandığında mevcut kodun performansını olumlu yönde etkileyebilir.
- Birden çok nesne arasında belirli uygulama durumlarını paylaşmanız gerektiğinde, ancak istemci kodu için bunların bağımsız sınıflar gibi görünmesi gerektiğinde.
4. Golang'da Köprü Tasarım Deseninin Uygulanması
4.1 UML Sınıf Diyagramına Giriş
4.2 Detaylı Uygulama Adımları
4.2.1 Soyut Rol Arayüzünü Tanımla
İlk olarak, DrawAPI arayüzünü tanımlıyoruz, spesifik kod aşağıdaki gibidir:
// Soyut rol arayüzü
type DrawAPI interface {
DrawACircle(radius, x, y int)
}
4.2.2 Somut Rol Sınıfını Uygula
Daha sonra, DrawAPI arayüzündeki metodları uygulayan RedCircle ve BlueCircle adlı iki sınıf tanımlıyoruz:
// Somut rol sınıfı
type RedCircle struct {}
func (c *RedCircle) DrawACircle(radius, x, y int) {
// kırmızı daire çizme mantığı
}
type BlueCircle struct {}
func (c *BlueCircle) DrawACircle(radius, x, y int) {
// mavi daire çizme mantığı
}
4.2.3 Soyut Köprü Arayüzünü Tanımla
Shape köprü arayüzünü tanımla:
// Soyut köprü arayüzü
type Shape interface {
Draw()
}
4.2.4 Somut Köprü Sınıfını Uygula
Shape arayüzünü uygulayan ve DrawAPI arayüzüne ait bir nesneyi içeren Circle sınıfını uygula:
// Somut köprü sınıfı
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 İstemci İşlevi Örneği
func main() {
redCircle := &Circle{100, 100, 10, new(RedCircle)}
blueCircle := &Circle{100, 100, 10, new(BlueCircle)}
redCircle.Draw()
blueCircle.Draw()
}
Bu şekilde, Golang'da Köprü tasarım desenini uygulamış olduk.