inblog logo
|
moohyun
    디자인패턴

    어댑터 패턴

    화낼거양'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
    Contents
    예제 :

    moohyun

    RSS·Powered by Inblog