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ı:
halkarayüzÜcret Kartı{
halkgeçersizaylık Bakiye();
halkgeçersizGeç ücreti();
halkgeçersizYıllık ücret();
}
Bu kuruluşun sisteminin işlediği popüler bir ödeme kartı türü erik kartıdır:
halksınıferik kartıuygularÜcret Kartı{
özelint kartNo;
özel String müşteriAdı;
özelçift denge;// birincil kurucu
halkerik kartı(int kartNo, Dize müşteriAdı, çift denge){
Bu.kartNo = kartNo;
Bu.müşteriAdı = müşteriAdı;
Bu.bakiye = denge;
}
// alıcılar ve ayarlayıcılar
halkintgetCardNo(){
geri dönmek kartNo;
}
halkgeçersizSetCardNo(int kartNo){
Bu.kartNo = kartNo;
}
halk Sicim MüşteriAdı al(){
geri dönmek müşteri adı;
}
halkgeçersizsetMüşteriAdı(Dize müşteriAdı){
Bu.müşteriAdı = müşteriAdı;
}
halkçiftdengeyi al(){
geri dönmek denge;
}
halkgeçersizsetBalance(çift denge){
Bu.bakiye = denge;
}
@geçersiz kıl
halkgeçersizaylık Bakiye(){
System.out.println("Ocak ayında " + Bu.müşteriAdı + "harcandı" + Bu.denge);
}
@geçersiz kıl
halkgeçersizGeç ücreti(){
System.out.println(Bu.müşteriAdı + " aylık gecikme ücreti 80,00$");
}
@geçersiz kıl
halkgeçersizYıllık ücret(){
System.out.println(Bu.müşteriAdı + "yıllık ücret 200,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:
halkarayüzKredi kartı{
halkgeçersizaylıkMin.Ödeme();
halkgeçersizfaiz();
halkgeçersizYıllık ücret();
}
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.
halksınıfÜcret Kartı AdaptörüuygularKredi kartı{
Ücret Kartı ücret Kartı;halkÜcret Kartı Adaptörü(Ücret Kartı ücret Kartı){
Bu.şarj Kartı = ücret Kartı;
}@geçersiz kıl
halkgeçersizaylıkMin.Ödeme(){
Bu.chargeCard.monthlyBalance();
}@geçersiz kıl
halkgeçersizfaiz(){
Bu.chargeCard.lateFee();
}
@geçersiz kıl
halkgeçersizYıllık ücret(){
Bu.chargeCard. Yıllık ücret();
}
}
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.
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ı.