inblog logo
|
maestrojava
    design pattern

    3. 어댑터 패턴(Adapter Pattern)

    서주홍's avatar
    서주홍
    Aug 14, 2024
    3. 어댑터 패턴(Adapter Pattern)
    Contents
    ■ 1. 어댑터 패턴을 사용하는 경우■ 2. 예제 코드■ 3. 정리
    💡
    어댑터 패턴은 객체지향 디자인 패턴 중 하나로, 호환되지 않는 인터페이스를 가진 클래스들이 서로 상호작용할 수 있도록 도와주는 패턴입니다. 마치 전자기기의 어댑터가 서로 다른 규격을 맞춰주는 것처럼, 어댑터 패턴은 기존 클래스를 수정하지 않고도 다른 인터페이스를 사용할 수 있게 해줍니다.
     

    ■ 1. 어댑터 패턴을 사용하는 경우

    • 이미 만들어진 무언가가 우리 시스템에 호환되지 않을 때
      • 외부에서 가져온 라이브러리나 클래스가 우리 시스템의 인터페이스와 맞지 않을 때, 어댑터를 사용해 호환성을 맞춥니다.
    • 아직 구현되지 않은 인터페이스에 대한 틀을 만들어놓고 개발할 때
      • 시스템에 필요한 인터페이스를 미리 정의해 두고, 그에 맞는 어댑터를 만들어서 이후에 개발될 클래스를 호환되도록 유도할 수 있습니다.
     
     

    ■ 2. 예제 코드

    // Animal 클래스 정의 package ex03; public abstract class Animal { abstract String getName(); } // 쥐 클래스 정의 public class Mouse extends Animal { private String name = "쥐"; @Override public String getName() { return name; } } // 외부에서 제공된 클래스 package ex03.lib; public class OuterRabbit { private String fullname = "토끼"; public String getFullname() { return fullname; } } // 어댑터 클래스 정의 package ex03; import ex03.lib.OuterRabbit; public class RabbitAdapter extends Animal { private OuterRabbit rabbit; public RabbitAdapter(OuterRabbit rabbit) { this.rabbit = rabbit; } @Override String getName() { return rabbit.getFullname(); } } // 어댑터 패턴 사용 예제 package ex03; import ex03.lib.OuterRabbit; public class App { public static void main(String[] args) { Animal mouse = new Mouse(); Animal tiger = new Tiger(); Doorman d1 = new Doorman(); d1.쫒아내(tiger); d1.쫒아내(mouse); RabbitAdapter rabbit = new RabbitAdapter(new OuterRabbit()); d1.쫒아내(rabbit); } }
    • 이 예제에서 OuterRabbit 클래스는 기존의 Animal 클래스와 호환되지 않지만, RabbitAdapter 클래스를 통해 OuterRabbit을 Animal처럼 사용할 수 있게 됩니다. 어댑터 패턴을 사용하면 기존 클래스를 수정하지 않고도 새로운 클래스를 시스템에 통합할 수 있습니다.
     
     

    ■ 3. 정리

    💡
    어댑터 패턴은 외부 라이브러리를 끌어와 사용하고 싶은데, 시스템과 맞지 않는 경우 이를 호환시켜 주는 패턴입니다. 마치 220V 전압을 5V로 낮춰주는 어댑터와 같은 역할을 합니다.

    ■ 어댑터 패턴을 사용하는 시점

    • 이미 만들어진 클래스가 시스템에 호환되지 않을 때.
    • 아직 만들어지지 않았지만, 특정 규격에 맞게 만들 필요가 있을 때.
     

    ■ 알아두어야 할 것

    • 어댑터 패턴은 기존에 호환되지 않는 무언가가 있을 때 사용됩니다.
    • 프록시 패턴은 기존 클래스에 부가 기능을 추가할 때 사용됩니다.
     
     
    💡
    정리 사이트 참고
    어댑터 패턴
    어댑터는 호환되지 않는 인터페이스를 가진 객체들이 협업할 수 있도록 하는 구조적 디자인 패턴입니다.
    어댑터 패턴
    https://refactoring.guru/ko/design-patterns/adapter
     
    Share article

    maestrojava

    RSS·Powered by Inblog