본문 바로가기
Design Pattern

어댑터 패턴 (Adapter Pattern)

by 밍상 2023. 10. 23.

어댑터 패턴

  • 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다.
  • 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와줍니다.

터키를 오리처럼 작동하게 하는 어댑터

public interface Duck {
    void quack();
    void fly();
}
public interface Turkey {
    void gobble();
    void fly();
}
public class TurkeyAdapter implements Duck{
    Turkey turkey;

    @Override
    public void quack() {
        turkey.gobble();
    }

    @Override
    public void fly() {
        turkey.fly();
    }
}

 

클라이언트에서 어댑터를 사용하는 방법

  1. 클라이언트에서 타깃 인터페이스로 메소드를 호출해서 어댑터에 요청을 보냅니다.
  2. 어댑터는 어댑티 인터페이스로 그 요청을 어댑티에 관한 메소드 호출로 변환합니다.
  3. 클라이언트는 호출 결과를 받지만 중간에 어댑터가 있다는 사실을 모릅니다.

 

예시

상품과 배송의 종류에(일반배송, 직매입, 해외 배송 등등) 따라서 여러가지 형태의 배송 도메인 객체를 가질 수 있지만,

클라이언트(FE, App)에 나가는 DTO는 동일한 형식으로 나가야 하는 그런 때가 있다. 이런 경우에 어댑터 패턴을 사용하면 좋을 것 같다.

 

 

참고

https://byulmuri.wordpress.com/2010/07/26/adapter-pattern/

 

Adapter Pattern

어댑터 패턴은 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결

byulmuri.wordpress.com

에릭 프리먼, 엘리자베스 롭슨, 케이시 시에라, 버트 베이츠. 『헤드퍼스트 디자인패턴 개정판』. 한빛미디어, 2022