適配器模式屬於結構型設計模式,主要應用於升級或改造舊系統時。所謂適配器按生活中的說法就是一個轉接口,將原本不直接匹配的兩個產品組合起來,類似於用iPhone手機充電器給android手機充電需要一個轉換頭,生活中這種例子隨處可見。
適配器模式主要有三個組成部分,目標接口(Target),適配器(Adapter),適配對象(Adaptee)。
package com.panda.adpter;
public interface Target {
void targ();
}
package com.panda.adpter;
public class Adaptee {
public void ada(){
System.out.println("適配對象方法!");
}
}
package com.panda.adpter;
public class Adapter extends Adaptee implements Target {
@Override
public void targ() {
// TODO Auto-generated method stub
super.ada();
}
}
package com.panda.adpter;
public class Client {
public void test(Target t){
t.targ();
}
public static void main(String[] args) {
Client c = new Client();
// Adapter a = new Adapter();
Target t = new Adapter();
c.test(t);
}
}
以上所採用的是類適配器,直接通過繼承來實現,由於繼承只能是單個繼承,不夠靈活,所以這種方法一般不如使用對象適配器。
package com.panda.adpter;
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
super();
this.adaptee = adaptee;
}
@Override
public void targ() {
// TODO Auto-generated method stub
adaptee.ada();
}
}
package com.panda.adpter;
public class Client {
public void test(Target t){
t.targ();
}
public static void main(String[] args) {
Client c = new Client();
Adaptee a = new Adaptee();
Target t = new Adapter(a);
c.test(t);
}
}
得到的結果都是一樣的