定義
將一個類的接口,轉換成客戶期望的另一個接口。適配器讓原本不兼容的類可以合作無間。
類適配器可以分為類適配器和對象適配器
實用性
當需要私用一個現有的類而其接口并不符合你需要的時,就使用適配器;
適配器改變接口以符合用戶的期望;
實例
1
package com.sailor.adapter;
2
3
4
/**
5
* 被適配者
6
* @author sailor
7
* Jul 25, 2008 9:35:19 AM
8
*/
9
public class Duck {
10
11
public Duck() {
12
13
}
14
15
public void fly(){
16
System.out.println("I can fly");
17
}
18
19
public void quack(){
20
System.out.println("quake!");
21
}
22
}
23

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

1
2
package com.sailor.adapter;
3
4
/**
5
* 目標接口
6
* @author sailor
7
* Jul 25, 2008 9:43:35 AM
8
*/
9
public interface Turkey {
10
11
public void gobble();
12
public void fly();
13
}
14

2

3

4

5

6

7

8

9

10

11

12

13

14

1
2
package com.sailor.adapter;
3
4
/**
5
* 適配器
6
* @author sailor
7
* Jul 25, 2008 9:38:10 AM
8
*/
9
public class TurkeyAdapter implements Turkey{
10
11
private Duck duck;
12
13
public TurkeyAdapter(Duck duck) {
14
this.duck = duck;
15
}
16
17
public void gobble(){
18
duck.quack();
19
}
20
21
public void fly(){
22
duck.fly();
23
}
24
25
26
}
27

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

1
2
package com.sailor.adapter;
3
4
/**
5
* 客戶端
6
* @author sailor
7
* Jul 25, 2008 9:45:29 AM
8
*/
9
public class Client {
10
11
/**
12
* @param args
13
*/
14
public static void main(String[] args) {
15
16
Duck duck = new Duck();
17
18
Turkey turkey = new TurkeyAdapter(duck);
19
20
turkey.gobble();
21
turkey.fly();
22
}
23
24
}
25

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

參考資料:《First Head 設計模式》