本文實例講述了Java經典設計模式之適配器模式。分享給大家供大家參考,具體如下:
適配器模式是把一個類的接口適配成用戶所期待的,使得原本由于接口不兼容而不能一起工作的一些類可以在一起工作從而實現用戶所期望的功能。
適配器模式的優勢:
1. 通過適配器,客戶端可以調用統一接口,操作簡單直接,并且代碼邏輯緊湊,使用起來方便。
2. 代碼復用,適配器模式就是解決因為環境要求不相同 的問題,通過適配實現代碼復用。
3. 將目標類和適配器類解耦,通過新建一個適配器類來重用現在的類,不用再去重復修改原有代碼,實現開閉原則。
共有兩類適配器模式
1.對象適配器模式: 在這種適配器模式中,適配器容納一個它包裹的類的實例。在這種情況下,適配器調用被包裹對象的物理實體。
2. 類適配器模式: 這種適配器模式下,適配器繼承自已實現的類(一般多重繼承)。
示例代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
/** * @description: * 原有的接口功能,比如是給電動車充電功能 */ public interface FirstBaseIf { void charging(); //充電 } /** * 要實現的操作功能 * @description: */ public class NewFunction { public void powerWithTwo(){ System.out.println(“新功能:給電動汽車也可以充電啦”); } } /** *新建適配器類,來實現對原有接口FirstBaseIf的操作使用 * @description: */ public class FunctionAdapter implements FirstBaseIf { private NewFunction plug; public FunctionAdapter(NewFunction plug){ this .plug=plug; } @Override public void charging() { //重寫原有接口中的方法,從而實現接口轉化 System.out.println(“通過適配器轉化”); plug.powerWithTwo(); } } //——–測試代碼——————- public class Test { private FirstBaseIf plug; public Test(FirstBaseIf plug) { this .plug = plug; } public static void main(String[] args) { NewFunction two = new NewFunction(); FirstBaseIf three = new FunctionAdapter(two); //這里就是通過適配器實現轉換 Test note = new Test(three); note.charge(); } public void charge() { plug.charging(); //使用原有接口中的功能 } } |
運行結果:
適用場景:
在Java程序中,如果一個抽象類或者接口的話,就必須要重寫所有的抽象方法。
那么,如果一個接口中定義的抽象方法過多,而子類中很多抽象方法又不需要用到,就應該設計一個適配器。通過Java語言進行的Android開發中,就經常會用到適配器模式。
希望本文所述對大家java程序設計有所幫助。