Adapter Pattern은 “이미 제공되고 있는것”과 “제공할것” 사이의 차이를 없애주는 Pattern이다. 기존의 Interface를 사용하는 interface를 client에 제공하는 방법을 통해서, Adapter Pattern은 일반적으로 interface 호환성 때문에 함께 사용할 수 없는 class들을 함께 작동하게 한다.
adapter는 새 interface의 호출을 기존의 interface 호출로 해석해준다. 그리고 Data를 자신이 원하는 적절한 형태로 변경도 할 수 있다. Adapter Pattern은 구현을 크게 두가지 방법으로 나눌 수 있다.
예제 소스(출처 : Java 언어로 배우는 디자인 패턴 입문. 영진닷컴)
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
public class AdapterPattern {
public static void main(String[] args) {
Print p = new PrintBanner("Hello");
p.printStrong();
p.printWeak();
}
}
adaptee
class Banner {
private String string;
public Banner(String string) {
this.string = string;
}
public void showWithParen() {
System.out.println("(" + string + ")");
}
public void showWithAster() {
System.out.println("*" + string + "*");
}
}
target
interface Print {
public void printWeak();
public void printStrong();
}
adapter
class PrintBanner implements Print {
private Banner banner;
public PrintBanner(String string) {
banner = new Banner(string);
}
public void printWeak() {
banner.showWithParen();
}
public void printStrong() {
banner.showWithAster();
}
}