Genel

Java Tasarım Desenleri – Adapter Pattern | Design Pattern

Adapter Pattern

Adapter Pattern anlatımıyla ilgili videoya aşağıdaki adresten erişebilirsiniz.

Adapter Pattern, yapısal tasarım desenleri kategorisine ait bir tasarım desenidir. Bu desen, bir sınıfın arayüzünü, başka bir sınıfın beklediği şekilde değiştirmek veya uyumlu hale getirmek için kullanılır. Bu sayede, uyumsuz sınıfların birlikte çalışması sağlanır.

Temel Bileşenler

  1. Target (Hedef) Arayüzü: Bu, istemci kodunun kullanmak istediği arayüzü temsil eder.
  2. Adaptee (Uyumsuz): Bu, adaptörün uyumlu hale getirmek istediği sınıfı veya arayüzü temsil eder.
  3. Adapter (Adaptör): Bu, Adaptee’nin arayüzünü Target arayüzüne dönüştüren sınıfı temsil eder.

Amaç

Adapter Pattern’in ana amacı, mevcut bir sınıfın arayüzünü değiştirmeden, farklı bir arayüzle uyumlu hale getirmektir. Böylece, uyumlu hale getirilen sınıf, istemci kodu tarafından kullanılabilir hale gelir.

Avantajlar

  • Esneklik: Adapter Pattern, mevcut kodu değiştirmeden farklı arayüzleri birlikte kullanabilmenizi sağlar.
  • Yeniden Kullanılabilirlik: Adaptörler, farklı projeler veya farklı senaryolar için tekrar kullanılabilir.
  • Uygulama Bağımsızlığı: Adapter, mevcut kodu ve yeni bileşenleri birbirinden bağımsız hale getirir.

Ancak, Adapter Pattern’in doğru şekilde kullanılması önemlidir. Uygun bir adapte edici seçmek ve uyum sorunlarını minimuma indirmek için dikkatli bir şekilde tasarlanmalıdır.

Bu şekilde, Adapter Pattern, uyumlu olmayan bileşenler arasında entegrasyon sağlayarak yazılım geliştirme sürecindeki esnekliği artırır ve kodun yeniden kullanılabilirliğini ve bakımını kolaylaştırır.

Kod Örneği:

 


public class PrizAdapter implements IYurtdisiPriz {

    ITurkiyePriz turkiyePriz;

    public PrizAdapter(ITurkiyePriz turkiyePriz) {
        this.turkiyePriz = turkiyePriz;
    }

    @Override
    public void priz() {
        turkiyePriz.turkiyePriz();
    }
}


public class TurkiyePriz implements ITurkiyePriz{
    @Override
    public void turkiyePriz() {
        System.out.println("Yurtiçi dönüştürücüsü");
    }
}


public class YurtdisiPriz implements IYurtdisiPriz{
    @Override
    public void priz() {
        System.out.println("Yurtdışı dönüştürücüsü");
    }
}



public interface IYurtdisiPriz {
    void priz();
}


public interface ITurkiyePriz {

    void turkiyePriz();
}


public class Main {
    public static void main(String[] args) {

        TurkiyePriz turkiyePriz = new TurkiyePriz();
        turkiyePriz.turkiyePriz();
        YurtdisiPriz yurtdisiPriz = new YurtdisiPriz();
        yurtdisiPriz.priz();

        IYurtdisiPriz prizAdapter = new PrizAdapter(turkiyePriz);
        prizAdapter.priz();
    }
}

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir