어댑터 패턴
어댑터 패턴이란
- 어댑터 패턴은 서로 호환성이 없는 두 객체를 호환되도록 할 때 사용하는 패턴이다.
- 기존의 클래스를 수정하지 않고, 사이의 어댑터 클래스를 만들어 사용할 수 있도록 해준다.
- 어댑터 패턴은 다음과 같이 나눠서 생각하면 편하다.
- Client 객체
- Adaptee 객체를 사용하는 객체
- Adaptee 객체
- Client와 호환성이 없는 객체
- Target 인터페이스
- Adapter 객체를 정의하는 Client가 사용할 인터페이스
- Adapter 객체
- Target을 구현하고, Adaptee를 직접 의존하는 객체
- Client 객체
간단한 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Client {
public String printAndSay(String text) {
return text;
}
}
public class Adaptee {
public void say(String text) {
System.out.println(text);
}
}
- 여기 서로 호환성 없는 두 클래스 Client와 Adaptee가 있다.
- 나는 얘네가 의존하진 않으면서, Client가 Adaptee를 사용할 수 있게끔 하고 싶다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public interface Target {
void say(String text);
}
public class Adapter implements Target {
private final Adaptee adaptee;
// constructor
@Override
public void say(String text) {
adaptee.say(text);
}
}
- 호환성이 없는 Client와 Adaptee 사이의 어댑터가 되어줄 Target과 Adapater를 정의했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Client {
private final Target target;
// constructor
public String printAndSay(String text) {
target.say(text);
return text;
}
}
- Client가 구체적인 구현체인 Adaptee를 의존하지 않고도 Adaptee를 사용할 수 있게 되었다.
This post is licensed under CC BY 4.0 by the author.