[디자인 패턴] 어댑터 패턴 (Adapter Pattern)

KangHo Lee's avatar
Nov 13, 2024
[디자인 패턴] 어댑터 패턴 (Adapter Pattern)
💡
두 개의 서로 다른 인터페이스를 가진 클래스를 함께 사용할 수 있도록 해주는 디자인 패턴

1. 주요 개념

  • 타깃 인터페이스(Target Interface): 클라이언트가 사용하려고 하는 인터페이스입니다.
  • 어댑티(Adaptee): 호환되지 않는 인터페이스를 가진 기존 클래스입니다.
  • 어댑터(Adapter): 타깃 인터페이스를 구현하여 어댑티의 인터페이스를 타깃 인터페이스로 변환합니다.

2. 기존 소스 코드

// main public class App { public static void main(String[] args) { Doorman doorman = new Doorman(); Mouse mouse = new Mouse(); Cat cat = new Cat(); doorman.쫓아내(cat); doorman.쫓아내(mouse); } }

3. 어댑터 패턴 적용

public class OuterTiger { private String fullname = "호랑이"; public String getFullname() { return fullname; } } public class TigerAdapter extends Animal{ // OuterTiger에 의존 private OuterTiger outerTiger; public TigerAdapter(OuterTiger outerTiger) { this.outerTiger = outerTiger; } @Override public String getName() { return outerTiger.getFullname(); } } // main public class App { public static void main(String[] args) { Doorman doorman = new Doorman(); Cat cat = new Cat(); Mouse mouse = new Mouse(); OuterTiger outerTiger = new OuterTiger(); TigerAdapter ta = new TigerAdapter(outerTiger); doorman.쫓아내(cat); doorman.쫓아내(mouse); doorman.쫓아내(ta); } }
  • 타깃 인터페이스는 Animal 클래스입니다.
  • 어댑티는 OuterTiger 클래스입니다.
  • 어댑터는 TigerAdapter 클래스입니다.
 
Share article

devleekangho