第1章 適配器模式簡介
1-1 什麼是適配器模式
生活中的例子
插座適配器
定義:適配器模式將一個類的接口,轉換成客戶期望的另外一個接口,
使得原本由於接口不兼容而不能一起工作的那些可以在一起工作。
Client->Target<-Adapter->Adaptee
Target:目標接口
Adapter:適配器
Adaptee:被適配類
第2章 適配器模式的實現
2-1 使用組合的方式實現插座適配器
/*
* 三相插座接口
*/
public interface ThreePlugIf {
//使用三相電流供電
public void powerWithThree();
}
public class GBTwoPlug {
//使用二相電流供電
public void powerWithTwo(){
System.out.println("使用二相電流供電");
}
}
/*
* 二相轉三相的插座適配器
*/
public class TwoPlugAdapter implements ThreePlugIf {
private GBTwoPlug plug;
public TwoPlugAdapter(GBTwoPlug plug){
this.plug = plug;
}
@Override
public void powerWithThree() {
System.out.println("通過轉化");
plug.powerWithTwo();
}
}
public class NoteBook {
private ThreePlugIf plug;
public NoteBook(ThreePlugIf plug){
this.plug = plug;
}
//使用插座充電
public void charge(){
plug.powerWithThree();
}
public static void main(String[] args) {
GBTwoPlug two = new GBTwoPlug();
ThreePlugIf three = new TwoPlugAdapter(two);
NoteBook nb = new NoteBook(three);
nb.charge();
}
}
2-2 使用繼承的方式實現插座適配器
插座適配器分析:把“被適配者”作爲一個對象組合到設配器類中,以修改目標接口包裝被適配者
- 組合
- 採用組合方式的適配器成爲對象的適配器
特點:把“被適配者”作爲一個對象組合到適配器類中,以修改目標接口包裝被適配者
- 採用組合方式的適配器成爲對象的適配器
- 繼承(Java是單繼承的)
- 採用繼承方式的稱爲類適配器
特點:通過多重繼承不兼容接口,實現對目標接口的匹配,單一的爲某個類而實現適配
- 採用繼承方式的稱爲類適配器
/*
* 採用繼承方式的插座適配器
*/
public class TwoPlugAdapterExtends extends GBTwoPlug implements ThreePlugIf {
@Override
public void powerWithThree() {
System.out.print("藉助繼承適配器");
this.powerWithTwo();
}
}
public class NoteBook {
private ThreePlugIf plug;
public NoteBook(ThreePlugIf plug){
this.plug = plug;
}
//使用插座充電
public void charge(){
plug.powerWithThree();
}
public static void main(String[] args) {
GBTwoPlug two = new GBTwoPlug();
ThreePlugIf three = new TwoPlugAdapter(two);
NoteBook nb = new NoteBook(three);
nb.charge();
three = new TwoPlugAdapterExtends();
nb = new NoteBook(three);
nb.charge();
}
}
類適配器模式通過多重繼承不兼容接口,實現對目標接口的匹配,單一的爲某個類而實現適配的這樣一種模式
第3章 適配器模式總結
3-1 適配器模式的總結
作用
- 透明
通過適配器,客戶端可以調用同一接口,因而對客戶端來說是透明的。這樣做更簡單、更直接、更緊湊。 - 重用
複用了現存的類,解決了現存類和複用環境要求不一致的問題。 - 低耦合
將目標類和適配者類解耦,通過引入一個適配器類重用現有的適配者
類,而不需修改原有代碼(遵循開閉原則)