1.1 Tanım
Adapter deseni, bir sınıfın arabulucusunun müşterinin beklediği başka bir arabulucuya dönüştürülmesine izin veren bir yapısal tasarım desenidir. Adapter deseni, uyumsuz arabulucular nedeniyle birlikte çalışamayan sınıfların birlikte çalışmasını mümkün kılar.
1.2 Amaç ve Etki
Adapter deseninin temel amacı, iki uyumsuz arayüz arasındaki uyumluluk sorununu çözmektir. Bir adaptör sınıfı kullanarak, uyumsuz sınıfların belirli bir işlevi uygulamak için birlikte çalışmalarına izin verir.
1.3 Adapter Deseni Temel İlkeleri
- Bir arabulucunun arayüzünü başka bir arayüze dönüştürürken, adapter deseni mevcut sınıflarla işlem yapmak için uygundur.
- Adapter deseni, orijinal sınıfı değiştirmek yerine bir adaptör sınıfı oluşturarak arayüz dönüşümünü uygular.
- Adapter deseni, sınıf adaptörü veya nesne adaptörü yoluyla uygulanabilir.
2. Adapter Deseni Özellikleri ve Avantajları
Adapter deseninin aşağıdaki özellikleri ve avantajları bulunmaktadır:
- Uyumsuz sınıfların birlikte çalışmasını sağlayarak arayüz dönüşümü için bir çözüm sunar.
- Sistemin esnekliğini ve ölçeklenebilirliğini artırabilir.
- Mevcut sınıfları yeniden kullanarak kod tekrarını ve geliştirme maliyetlerini azaltabilir.
- Gevşek bağlı bir tasarım çözümü sunar, sistemi daha esnek ve bakımı daha kolay hale getirir.
3. Adapter Deseni Uygulama Senaryoları
Adapter deseni genellikle aşağıdaki senaryolarda kullanılır:
- Mevcut bir sınıfı kullanma ihtiyacı olduğunda, ancak arayüzü gereksinimleri karşılamıyorsa.
- Uyumsuz arayüzlerle çalışabilen yeniden kullanılabilir bir sınıf oluşturma ihtiyacı olduğunda.
- Birden fazla sınıf arasında arayüz dönüşümü gerçekleştirme ihtiyacı olduğunda.
4.1 UML Sınıf Diyagramı
4.2 Uygulama Adımı 1: Adapter Arayüzünün Tasarlanması
package main
type Hedef interface {
Talep()
}
4.3 Uygulama Adımı 2: Adapter Sınıfının Uygulanması
package main
type UyumluOlmayan struct {
}
func (u *UyumluOlmayan) ÖzgüTalep() {
// UyumluOlmayan sınıfının özgü işlevselliğini uygula
}
type Adaptör struct {
uyumluOlmayan *UyumluOlmayan
}
func YeniAdaptör() *Adaptör {
return &Adaptör{uyumluOlmayan: &UyumluOlmayan{}}
}
func (a *Adaptör) Talep() {
a.uyumluOlmayan.ÖzgüTalep()
}
4.4 Uygulama Adımı 3: Adaptör Desenini Çağıran İstemci Kodu
package main
func main() {
adaptör := YeniAdaptör()
adaptör.Talep()
}
5.1 Adapter Deseni ile Köprü Deseni Arasındaki Fark ve Bağlantı
Adapter deseni ve Köprü deseni, farklı sınıflar arasındaki arayüz sorununu çözmek için kullanılabilir, ancak temel farkları şunlardır:
- Adapter deseni, genellikle zaten mevcut olan iki arayüz arasındaki uyumluluk dönüşümüne odaklanır.
- Köprü deseni, genellikle soyutlama ve uygulama arasındaki ayrımı odaklanarak, arayüz ve uygulama sınıfı arasındaki köprü ile bağ kurarak bağımsızlık sağlar.
5.2 Microservices Mimarisinde Adapter Deseni Uygulaması
Microservices mimarisinde, farklı mikroservisler farklı arayüzler kullanabilir. Adapter deseni, farklı hizmetler arasındaki uyumluluk sorunlarını çözmemize yardımcı olabilir, böylece birlikte çalışmalarını sağlar.
5.3 Ön Uç ve Arka Uç Ayrı Geliştirmede Adapter Deseni Uygulaması
Ön uç ve arka uç ayrı geliştirmede, genellikle ön uç, arka uçtan veri alması gerekebilir, ancak arka uç tarafından sunulan arayüzler ön uç gereksinimlerini karşılamayabilir. Adapter deseni, arka uç arayüzlerini ön uçün beklediği arayüzlere uyarlamamıza yardımcı olabilir, böylelikle ön uç ile arka uç arasında sorunsuz işbirliği sağlanabilir.