概述
擴充卡模式(Adapter Pattern)又叫做變壓器模式,是指将一個類的接口轉換成客戶期望的另一個接口,使 原本的接口不相容的類可以一起工作,屬于結構型設計模式。
根據擴充卡類與适配者類的關系不同,擴充卡模式可分為對象擴充卡和類擴充卡兩種,在對象擴充卡模式中,擴充卡與适配者之間是關聯關系;在類擴充卡模式中,擴充卡與适配者之間是繼承(或實作)關系。
生活中有非常多的應用場景,例如手機充電轉換頭、顯示器轉接頭、網口轉接頭等。
場景:
1、已經存在的類,它的方法和需求不比對(方法結果相同或相似)的情況。
2、擴充卡模式不是軟體設計階段考慮的設計模式,是随着軟體維護,由于不同産品、不 同廠家造成功能類似而接口不相同情況下的解決方案。有點亡羊補牢的感覺。
類擴充卡
public class AC220 {
public int outputAC220V(){
int output = 220;
System.out.println("輸出電流" + output + "V");
return output;
}
}
public interface DC5 {
int outoupDC5V();
}
public class PowerAdapter extends AC220 implements DC5 {
public int outoupDC5V() {
int adapterInput = super.outputAC220V();
int adapterOutput = adapterInput / 44;
System.out.println("使用PowerAdapter輸入AC:" + adapterInput + "V,輸出DC:" + adapterOutput + "V");
return adapterOutput;
}
}
public class PowerAdapterTest {
public static void main(String[] args) {
DC5 dc5 = new PowerAdapter();
dc5.outoupDC5V();
}
}
對象擴充卡
類結構圖
public class AC220 {
public int outputAC220V(){
int output = 220;
System.out.println("輸出電流" + output + "V");
return output;
}
}
public interface DC5 {
int outoupDC5V();
}
public class PowerAdapter implements DC5 {
private AC220 ac220;
public PowerAdapter(AC220 ac220) {
this.ac220 = ac220;
}
public int outoupDC5V() {
int adapterInput = ac220.outputAC220V();
int adapterOutput = adapterInput / 44;
System.out.println("使用PowerAdapter輸入AC:" + adapterInput + "V,輸出DC:" + adapterOutput + "V");
return adapterOutput;
}
}
public class PowerAdapterTest {
public static void main(String[] args) {
DC5 dc5 = new PowerAdapter(new AC220());
dc5.outoupDC5V();
}
}