Adaptör deseni

Adaptör deseni veya kalıbı (), yazılım mühendisliğinde, bir sınıfın arayüzünü istemcinin beklediği başka bir arayüze dönüştüren bir  yazılım tasarım kalıbıdır. Böylece, uyumsuz arayüzlere sahip sınıflar birlikte çalışabilir hâle gelir.

 Genel bakış 

Adaptör kalıbı, Gang of Four tarafından tanımlanan 23 temel tasarım kalıbından biridir ve yapısal kalıplar arasında sınıflandırılır. Bu kalıp, istemcinin ihtiyaç duyduğu arayüzü uygulamayan bir sınıfın, bu arayüze uyum sağlayarak kullanılabilmesini mümkün kılar.

 Bileşenler 

Adaptör kalıbı şu temel bileşenlerden oluşur:

 Hedef Arayüz (Target): İstemcinin beklediği arayüzü tanımlar.
 Adaptee: Uyum sağlanmak istenen mevcut sınıf veya arayüz.
 Adaptör (Adapter): Hedef arayüzü uygulayan ve adaptee’nin işlevselliğini bu arayüze uyarlayan sınıf.
 İstemci (Client): Hedef arayüzü kullanan kod parçası.

 Uygulama 

Adaptör kalıbı iki farklı yöntemle uygulanabilir:

 Sınıf Adaptörü (Class Adapter) 

Bu yaklaşımda, adaptör sınıfı hem hedef arayüzü uygular hem de adaptee sınıfından kalıtım alır. Bu yöntem, çoklu kalıtımı destekleyen dillerde mümkündür.

// Java örneği (sınıf adaptörü)
class Adaptör extends Adaptee implements HedefArayüz {
    public void hedefMetot() {
        adapteeMetot();
    }
}

 Nesne Adaptörü (Object Adapter) 

Bu yaklaşımda, adaptör sınıfı bileşim yoluyla adaptee nesnesine başvurur. Java ve C# gibi tekli kalıtım destekleyen dillerde bu yöntem tercih edilir.

// Java örneği (nesne adaptörü)
class Adaptör implements HedefArayüz {
    private Adaptee adaptee;

    public Adaptör(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    public void hedefMetot() {
        adaptee.adapteeMetot();
    }
}

 Adaptör deseni örneği 

Adaptör kalıbı, gerçek dünyada priz adaptörlerine benzetilebilir. Örneğin, Avrupa tipi bir fişi Amerikan tipi prize uydurmak için fiziksel bir adaptör kullanılır. Benzer şekilde, yazılımda da farklı arayüzlere sahip bileşenleri birbirine uyarlamak için adaptör kullanılır.

 Avantajlar 

 Mevcut sınıflar değiştirilmeden yeniden kullanılabilir.
 Arayüzler uyumlaştırılarak sistemler entegre edilebilir.
 Kodun esnekliği ve yeniden kullanılabilirliği artar.

 Dezavantajlar 

 Fazladan bir soyutlama katmanı eklenmesi, kod karmaşıklığını artırabilir.
 Gereksiz kullanımı, sistem mimarisini karmaşıklaştırabilir.

 Kullanım senaryoları 

 Var olan bir sınıfın istemcinin beklediği arayüzle uyumlu hâle getirilmesi gerekiyorsa.
 Üçüncü parti kütüphanelerin veya eski sistemlerin mevcut uygulamalara entegre edilmesi gerekiyorsa.
 Farklı veri formatları veya iletişim protokolleri arasında köprü kurmak gerekiyorsa.

 İlgili Kalıplar 

 Köprü deseni: Soyutlama ve uygulamanın ayrılmasını sağlar. Adaptör, mevcut sınıfları yeni bir arayüze uyarlar; köprü ise yeni soyutlamalar ve uygulamalar arasında ayrım yapar.
 Süsleyici deseni: Dinamik olarak yeni davranışlar ekler, ancak adaptasyon sağlamaz.
 Fasade deseni: Alt sistemlere daha basit bir arayüz sağlar.

 Kaynakça 

Kategori:Yazılım tasarım örüntüleri