티스토리 뷰

어댑터 패턴 ( Adapter Pattern )


 🔥 클라이언트 의 인터페이스 와 맞지 않아도 클라이언트가 기대하는 인터페이스로 변환해 사용할 수 있게 해주는 디자인 패턴이다.

 

용도

  • 인터페이스 변경이 불가능한 외부 라이브러리 혹은 프레임 워크의 인터페이스를 원하는 형태의 인터페이스로 변경 후 사용할 수 있다.
  • 유사한 작업을 진행 하지만 인터페이스가 다른 경우 하나의 인터페이스를 통합 할 수 있다.

 

객체 모델

 

Target

  • 클라이언트가 사용하는 인터페이스
public interface Target {
  String task();
}

 

Adapter

  • AdapteeTarget의 인터페이스를 따르게 하기위해 AdapteeWrapping 하고 있는 객체
  • Apdater 를 통해 서로 다른 인터페이스를 가진 객체를 통합하거나 원하는 인터페이스로 변환 할 수 있다.
public class FirstAdapter implements Target{
  private final FirstAdaptee adaptee=  new FirstAdaptee();

  @Override
  public String task() {
    return adaptee.callStr();
  }
}

 

Adaptee

  • 어댑터를 통해 인터페이스를 원하는 형태로 변환하거나 서로 인터페이스를 통합하고자 하는 객체들
public class FirstAdaptee {
    public String callStr() {
      return "Hero";
    }
}

 

 

예제 코드

 

GitHub - icraft2170/Blog-Example-Code

Contribute to icraft2170/Blog-Example-Code development by creating an account on GitHub.

github.com

참조

코딩으로 학습하는 GoF의 디자인 패턴

 

코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의

디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할

www.inflearn.com

어댑터 패턴 (Adapter Pattern)

 

어댑터 패턴 (Adapter Pattern)

서로 일치하지 않는 인터페이스를 가진 클래스를 함께 동작시킨다

johngrib.github.io

 

댓글