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.
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.
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ı.