어댑터 패턴

화낼거양's avatar
Nov 13, 2024
어댑터 패턴
Contents
예제 :
어댑터 패턴(Adapter Pattern)은 기존 클래스의 인터페이스를 사용자가 원하는 다른 인터페이스로 변환하여, 서로 호환되지 않는 인터페이스를 가진 클래스들이 협력할 수 있도록 해주는 패턴입니다.
이 패턴은 기존 클래스의 재사용성 및 유연성을 높이고, 코드의 유지보수성을 향상시키는 데 도움을 줍니다.
 
 

예제 :

 
만약 OuterTiger 라는 외부의 객체의 파일을 받아온 뒤,
이전의 Doorman의 ‘쫒아내(OuterTiger 객체)’를 사용하려고 한다고 가정하였을 때 :
(쫒아내()메서드의 매개변수는 Animal을 상속하는 객체만 받을 수 있습니다.)
 
OuterTiger는 Animal을 상속하지 않기 때문에 컴파일 오류가 발생합니다.
 
Doorman doorman = new Doorman(); OuterTiger outerTiger = new OuterTiger(); // Animal을 상속하지 않는 외부 파일 doorman.쫒아내(OuterTiger); // Animal을 상속하는 객체만 매개 변수로 받을 수 있음 // 위의 내용은 적용 불가
 
 

문제 해결을 위한 어댑터 클래스 작성 내용

 
public class TigerAdapter extends Animal { private OuterTiger outerTiger; public TigerAdapter(OuterTiger outerTiger) { this.outerTiger = outerTiger; } @Override public String getName() { return outerTiger.getFullname(); } }
 
  • Animal 클래스를 상속하는 객체만 쫒아내() 메서드의 매개변수로 사용할 수 있기 때문에 Animal을 상속(extends).
  • 초기화 할 때 OuterTiger 객체를 받아 초기화 할 수 있도록 구성. (has)
  • Animal 추상클래스의 추상 메서드를 재정의.
 

메인 메서드에서 테스트

 
OuterTiger outerTiger = new OuterTiger(); Animal tigerAdapter = new TigerAdapter(outerTiger); Doorman doorman = new Doorman(); doorman.쫒아내(tigerAdapter);
 
  • OuterTiger(외부클래스파일)를 TigerAdapter(어댑터클래스)를 초기화 할 때 매개 변수로 전달.
  • Doorman 객체의 ‘쫒아내 메서드’ 매개 변수에 TigerAdapter를 매개 변수로 전달.
 
출력 결과 :
notion image
 
어댑터 클래스는 Animal을 상속하고 있기 때문에 컴파일 오류 없이 OuterTiger의 이름을 출력하는 것을 확인할 수 있습니다.
Share article

moohyun