Adaptör Tasarım Kalıbı Nedir ve Nasıl Kullanabilirsiniz?

Adaptör Tasarım Kalıbı Nedir ve Nasıl Kullanabilirsiniz?
Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

Hizmet odaklı mimarinin (SOA) yükselişiyle birlikte, giderek daha fazla kuruluş kurumsal sistemleri için üçüncü taraf hizmetleri kullanıyor. Bu şirketlerin hızla değişen iş ortamına ayak uydurması gerekiyor, bu da bir hizmet sağlayıcının hizmetlerinden vazgeçip diğerine geçmek anlamına gelebilir.





Bu gibi durumlarda, bir işletmenin mevcut mimarisi yeni bir sağlayıcınınkiyle uyumsuz olabilir. Bir işletme, yeni yazılımla uyumlu hale getirmek için işletme kodunu yeniden yazmak için aylar harcamak yerine, bağdaştırıcı tasarım modelini kullanabilir.





Bağdaştırıcı Tasarım Modeli Nedir?

Bağdaştırıcı deseni, uyumsuz arabirimlere sahip sınıfların birlikte çalışmasına izin verir. Bunu, mevcut bir sınıfın (veya yazılımın) arayüzünü bir müşterinin (veya hizmetin) beklediği arayüze dönüştürerek yapar. İki tür bağdaştırıcı vardır: nesne bağdaştırıcıları ve sınıf bağdaştırıcıları.





Nesne bağdaştırıcısı, bağdaştırıcıyı bağdaştırıcıyla sarmak için bileşimi kullanır ve müşterinin beklediği arabirimi etkili bir şekilde üretir. Bu nedenle, müşteri bir dizi beklerse, bağdaştırıcı bir tamsayı (adapte) alır ve ona bir dizi karakteristiği verir.

 nesne bağdaştırıcısı

Yukarıdaki sınıf diyagramı, nesne bağdaştırıcısını temsil eder. bu bağdaştırıcı sınıfı uygular hedef arayüzü , arayüzün tüm yöntemlerine etkili bir şekilde erişim sağlıyor. Sonra bir uyarlar adapte ve bunu sarar adapte ile hedef arayüz yöntemler.



Bağdaştırıcı sınıfı, bağdaştırıcı sınıfının hem uyarlananın hem de hedef sınıfın alt sınıfı olduğu çoklu kalıtımı kullanır. Aşağıdaki sınıf diyagramı, çoklu kalıtımı destekleyen programlama dillerinde kullanmakta özgür olduğunuz sınıf bağdaştırıcısını temsil eder.

 Sınıf adaptörü

Adaptör Tasarım Modelini Java'da Uygulamak

Bu uygulama, nesne bağdaştırıcısını uygulayacaktır. Bu örnek uygulama, ödeme kartlarının kullanımından ve işlenmesinden kredi kartlarına geçiş yapan bir finans kuruluşunu simüle edecektir. Bu kuruluş başlangıçta aşağıdaki ödeme kartı arayüzünü kullandı:





 public interface ChargeCard { 
  public void monthlyBalance();
  public void lateFee();
  public void Annualfee();
}

Bu kuruluşun sisteminin işlediği popüler bir ödeme kartı türü erik kartıdır:

 public class PlumCard implements ChargeCard { 
  private int cardNo;
  private String customerName;
  private double balance;

  // primary constructor
  public PlumCard(int cardNo, String customerName, double balance) {
    this.cardNo = cardNo;
    this.customerName = customerName;
    this.balance = balance;
  }

  // getters and setters
  public int getCardNo() {
    return cardNo;
  }

  public void setCardNo(int cardNo) {
    this.cardNo = cardNo;
  }

  public String getCustomerName() {
    return customerName;
  }

  public void setCustomerName(String customerName) {
    this.customerName = customerName;
  }

  public double getBalance() {
    return balance;
  }

  public void setBalance(double balance) {
    this.balance = balance;
  }
   
  @Override
  public void monthlyBalance() {
    System.out.println("In January " + this.customerName + " spent " + this.balance);
  }

  @Override
  public void lateFee() {
    System.out.println(this.customerName + " monthly latefee is .00");
  }

  @Override
  public void Annualfee() {
    System.out.println(this.customerName + " annual fee is 0.00");
  }
}

Bu finans kurumu kredi kartlarına geçiyor ve ödeme kartlarını aşamalı olarak kaldırıyor, bu nedenle bazı müşterilerinin artık kredi kartları var:





 public interface CreditCard { 
  public void monthlyMinPayment();
  public void interest();
  public void Annualfee();
}

Finans kurumu işletme sistemi, önümüzdeki yıl kredi kartlarının kullanımına son vermeyi planladığı için artık yalnızca kredi kartlarını işliyor. Ancak müşterilerinin çoğu hala şarj kartlarını kullanıyor. Bu nedenle mühendisler, tüm müşterileri kredi kartına geçene kadar bir adaptör uygulamanın en iyisi olduğuna karar verdiler.

 public class ChargeCardAdapter implements CreditCard { 
  ChargeCard chargeCard;

  public ChargeCardAdapter(ChargeCard chargeCard) {
    this.chargeCard = chargeCard;
  }

  @Override
  public void monthlyMinPayment() {
    this.chargeCard.monthlyBalance();
  }

  @Override
  public void interest() {
    this.chargeCard.lateFee();
  }

  @Override
  public void Annualfee() {
    this.chargeCard.Annualfee();
  }
}

Bu ChargeCardAdapter Java sınıfı CreditCard'ı uygular java arayüzü . ChargeCard'ı (uyarlanan) uyarlayarak ona bir kredi kartının özelliklerini verir. Örneğin sistem, kredi kartı faizini henüz dönüştürmemiş kredi kartı müşterisinin gecikme ücreti olarak işleyecektir.

ücretsiz film izlemek için en iyi site

Adaptör Kalıbını Kullanmanın Avantajları

Bağdaştırıcı modelini kullanmanın en büyük avantajı, istemcilerin kodlarını değiştirmeden yeni hizmetleri, kitaplıkları ve özellikleri kullanmalarına izin vermesidir. Bu, uygulama ölçeklenebilirliğini destekler.

Diğer bir avantajı da bu kalıbın esnek olmasıdır. Bağdaştırıcı deseni iki uygulama yöntemi sağlar: nesne bağdaştırıcıları ve sınıf bağdaştırıcıları.