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를 매개 변수로 전달.
출력 결과 :

어댑터 클래스는 Animal을 상속하고 있기 때문에 컴파일 오류 없이 OuterTiger의 이름을 출력하는 것을 확인할 수 있습니다.
Share article