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
- Target (Hedef) Arayüzü: Bu, istemci kodunun kullanmak istediği arayüzü temsil eder.
- Adaptee (Uyumsuz): Bu, adaptörün uyumlu hale getirmek istediği sınıfı veya arayüzü temsil eder.
- 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();
}
}




