در این قسمت تیم کدگیت را با آموزش Adapter پترن در جاوا همراهی کنید. پیش نیاز این آموزش شامل موارد زیر است:
- آشنایی با شی گرایی در جاوا
- آشنایی با interface در جاوا
- آشنایی با متد در جاوا
- ارث بری در جاوا
- Constructor در جاوا
- This در جاوا
- دیزاین پترن
Structural Patterns
یکی از زیر شاخههای دیزاین پترن Structural Patterns است. Structural Patterns در مورد اشیا و کلاسها و چگونگی ترکیب آنها با یکدیگر صحبت میکند. برای مشخص کردن ارتباط اشیا و کلاسها با یکدیگر، این پترن ساختار سادهای را ایجاد میکند (البته بیشتر تمرکز این پترن بر روی شی گرایی است).
Adapter پترن در جاوا
در دنیای واقعی ما آداپتور را برای مبدل جریان برق استفاده میکنیم. در دنیای نرمافزار نیز گاهی نیاز تبدیل دو شی یا کلاس به یکدیگر داریم. یک راه حل ساده استفاده از Adapter پترن در جاوا است یا به معنای دیگر Adapter پترن، مبدلی است بین دو کلاس یا شی.

مثال Adapter پترن در جاوا
فرض کنید میخواهیم برای بانک، نرمافزاری ساده بنویسیم. کلاسی به نام BankDetail داریم که اطلاعات حساب یک شخص به همراه شماره حساب و نام شخص در آن ذخیره میشود. حال برای صادر کردن کارت بانک (Credit Card) به همه اطلاعات نیاز نداریم. یک کلاس به نام Bank Customer داریم که اطلاعات بانکی و Credit Card را در خود ذخیره میکند. کد کلاس Bank Detail به صورت زیر میباشد.
public class BankDetails {
private String bankName;
private String accHolderName;
private long accNumber;
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
public String getAccHolderName() {
return accHolderName;
}
public void setAccHolderName(String accHolderName) {
this.accHolderName = accHolderName;
}
public long getAccNumber() {
return accNumber;
}
public void setAccNumber(long accNumber) {
this.accNumber = accNumber;
}
}
یک interface هم به نام Credit Card داریم به عنوان رابط و مبدل بین دو کلاس Bank Detail و Bank Customer.
public interface CreditCard {
public void giveBankDetails();
public String getCreditCard();
}
کد کلاس Bank Customer به صورت زیر میباشد.
public class BankCustomer extends BankDetails implements CreditCard {
public void giveBankDetails() {
setAccHolderName("CodeGate");
setAccNumber(1234567);
setBankName("CG ");
}
@Override
public String getCreditCard() {
long accno = getAccNumber();
String accholdername = getAccHolderName();
String bname = getBankName();
return ("The Account number " + accno + " of " + accholdername + " in "
+ bname + "bank is valid and authenticated for issuing the credit card. ");
}
}
تست Adapter پترن در جاوا
برای تست کدهای بالا، کد Main زیر را بزنید:
public static void main(String[] args) {
CreditCard targetInterface = new BankCustomer();
targetInterface.giveBankDetails();
System.out.print(targetInterface.getCreditCard());
}