适配器模式说, 只是“将类的接口转换为客户端所需的另一个接口”。
换句话说, 在使用具有不同接口的类的服务时, 根据客户端需求提供接口。
【适配器模式】适配器模式也称为包装器。
适配器模式的优势
- 它允许两个或多个以前不兼容的对象进行交互。
- 它允许重复使用现有功能。
- 当对象需要利用具有不兼容接口的现有类时。
- 当你要创建可重用的类并与没有兼容接口的类配合使用时。
- 当你要创建可重用的类并与没有兼容接口的类配合使用时。
让我们通过上面的UML图了解适配器设计模式的示例。
UML用于适配器模式: 适配器模式有以下规格:
- 目标接口:这是客户端将使用的所需接口类。
- 适配器类:此类是包装器类, 它实现所需的目标接口并修改Adaptee类中可用的特定请求。
- Adaptee类:Adapter类使用此类来重用现有功能并对其进行修改以达到所需的用途。
- 客户端:此类将与Adapter类进行交互。
文章图片
以上UML的实现: 步骤1 创建一个CreditCard界面(目标界面)。
public interface CreditCard {
public void giveBankDetails();
public String getCreditCard();
}// End of the CreditCard interface.
第2步 创建一个BankDetails类(Adaptee类)。
// This is the adapter class.
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;
}
}// End of the BankDetails class.
第三步 创建一个BankCustomer类(Adapter类)。
// This is the adapter classimport java.io.BufferedReader;
import java.io.InputStreamReader;
public class BankCustomer extends BankDetails implements CreditCard {
public void giveBankDetails(){
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter the account holder name :");
String customername=br.readLine();
System.out.print("\n");
System.out.print("Enter the account number:");
long accno=Long.parseLong(br.readLine());
System.out.print("\n");
System.out.print("Enter the bank name :");
String bankname=br.readLine();
setAccHolderName(customername);
setAccNumber(accno);
setBankName(bankname);
}catch(Exception e){
e.printStackTrace();
}
}
@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. ");
}
}//End of the BankCustomer class.
步骤4 创建一个AdapterPatternDemo类(客户端类)。
//This is the client class.
public class AdapterPatternDemo {
public static void main(String args[]){
CreditCard targetInterface=new BankCustomer();
targetInterface.giveBankDetails();
System.out.print(targetInterface.getCreditCard());
}
}//End of the BankCustomer class.
输出量
Enter the account holder name :Sonoo JaiswalEnter the account number:10001Enter the bank name :State Bank of IndiaThe Account number 10001 of Sonoo Jaiswal in State Bank of India bank is valid
and authenticated for issuing the credit card.
推荐阅读
- 行为设计模式
- 什么是.DAT文件以及如何在Windows 10中打开DAT文件()
- Android和iOS设备的12大最佳写作应用软件合集推荐
- Windows 10如何从PDF文件中提取图像(有哪些方法?)
- 供作者使用的12大最佳图书写作软件推荐合集(哪个最好用())
- Win8怎样禁用Windows徽标键?
- Windows8龙之谷玩不了怎样办?
- Win8.1开机总是显示loading system怎样办?
- Win8系统怎样运用高级打开?Win8系统运用高级打开项的办法