將一個類的接口轉換成客戶可用的另一個接口。測試
將本來不兼容不能在一塊兒工做的類添加適配處理類,使其能夠在一塊兒工做。this
要想只有USB接口的電腦想使用PS/2接口的鍵盤,必須使用PS/2轉USB的適配器。spa
(1)定義USB接口code
1 /** 2 * 客戶所期待的接口(至關於USB接口) 3 * @author CL 4 * 5 */ 6 public interface Target { 7 8 void handleReq(); 9 10 }
(2)定義PS/2鍵盤對象
1 /** 2 * 被適配的類 (至關於例子中的PS/2鍵盤) 3 * @author CL 4 * 5 */ 6 public class Adaptee { 7 8 public void request() { 9 System.out.println("我是PS/2接口的鍵盤!"); 10 } 11 12 }
(3)定義PS/2轉USB的適配器blog
a. 類適配器接口
1 /** 2 * 適配器(至關於能夠將PS/2接口轉換成USB接口的適配器自己) 3 * 類適配器方式 4 * @author CL 5 * 6 */ 7 public class Adapter extends Adaptee implements Target { 8 9 public void handleReq() { 10 super.request(); 11 } 12 13 }
測試:get
1 /** 2 * 客戶端類(至關於只能識別USB接口鍵盤的電腦) 3 * @author CL 4 * 5 */ 6 public class Client { 7 8 public void test(Target t) { 9 t.handleReq(); 10 } 11 12 public static void main(String[] args) { 13 Client c = new Client(); 14 Adaptee a = new Adaptee(); 15 16 Target t = new Adapter(); //類適配器方式 17 18 c.test(t); 19 } 20 21 }
控制檯輸出:class
我是PS/2接口的鍵盤!
b.對象適配器test
1 /** 2 * 適配器(至關於能夠將PS/2接口轉換成USB接口的適配器自己) 3 * 對象適配器方式,使用了組合的方式跟被適配對象整合 4 * @author CL 5 * 6 */ 7 public class Adapter implements Target { 8 9 private Adaptee adaptee; 10 11 public Adapter(Adaptee adaptee) { 12 this.adaptee = adaptee; 13 } 14 15 public void handleReq() { 16 adaptee.request(); 17 } 18 19 }
測試:
1 /** 2 * 客戶端類(至關於只能識別USB接口鍵盤的電腦) 3 * @author CL 4 * 5 */ 6 public class Client { 7 8 public void test(Target t) { 9 t.handleReq(); 10 } 11 12 public static void main(String[] args) { 13 Client c = new Client(); 14 Adaptee a = new Adaptee(); 15 16 Target t = new Adapter3(); //類適配器方式 17 18 c.test(t); 19 } 20 21 }
控制檯輸出:
我是PS/2接口的鍵盤!