Post

어댑터 패턴





어댑터 패턴이란

  • 어댑터 패턴은 서로 호환성이 없는 두 객체를 호환되도록 할 때 사용하는 패턴이다.
  • 기존의 클래스를 수정하지 않고, 사이의 어댑터 클래스를 만들어 사용할 수 있도록 해준다.
  • 어댑터 패턴은 다음과 같이 나눠서 생각하면 편하다.
    • Client 객체
      • Adaptee 객체를 사용하는 객체
    • Adaptee 객체
      • Client와 호환성이 없는 객체
    • Target 인터페이스
      • Adapter 객체를 정의하는 Client가 사용할 인터페이스
    • Adapter 객체
      • Target을 구현하고, Adaptee를 직접 의존하는 객체





간단한 구현

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.