inblog logo
|
{CODE-RYU};
    java

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

    류재성's avatar
    류재성
    May 28, 2024
    [디자인 패턴] 3 어댑터 패턴(Adapter Pattern)
    Contents
    1. 어댑터 패턴(Adapter Pattern) 이란?2. 구현해보기
     

    1. 어댑터 패턴(Adapter Pattern) 이란?

     
    💡
    어댑터 패턴(Adapter Pattern)은 호환성이 없는 인터페이스를 가진 클래스들을 함께 동작하도록 만드는 패턴이다. 즉, 기존 클래스의 인터페이스를 다른 인터페이스로 변환하여 호환성을 유지하면서 재사용성을 높일 수 있다.
     
     
    notion image
     
    문지기가 동물 타입을 쫓아내고 있다.
    그런데 만약 토끼라는 외부에서 만든 클래스가 있다면 어떨까? 이 토끼라는 외부 클래스는 내가 만든게 아니기 때문에 Animal 타입을 상속하거나 코드를 수정할 수도 없고, 새롭게 클래스를 만들기는 너무 비효율적이다.
     
    외부에서 만든 토끼 클래스
    package ex03.lib; // 목적: OuterRabbit을 문지기에 전달하는 법 (코드를 수정할 수 없다) // 외부에서 만든 토끼, 그래서 Animal 을 상속받지 않음 public class OuterRabbit { private String fullname = "토끼"; public String getFullname() { return fullname; } }
     
    문지기
    package ex03; //문지기 public class Doorman { public void 쫓아내(Animal animal) { System.out.println(animal.getName() + " 을 쫓아내"); } }
     
    문지기는 animal 타입을 매개변수로 받고, 내부의 메서드도 getName을 호출하기 때문에 fullname을 가지고 있는 OuterRabbit 를 사용할 수 없다. 이때 어댑터 패턴을 사용해 OuterRabbit 을 사용해보자.

    2. 구현해보기

     
    [디자인 패턴] 1 전략 패턴(Strategy Pattern) - {CODE-RYU};
    java
    [디자인 패턴] 1 전략 패턴(Strategy Pattern) - {CODE-RYU};
    https://inblog.ai/coderyu1/디자인-패턴-1-전략-패턴strategy-pattern-20780?traffic_type=internal
    [디자인 패턴] 1 전략 패턴(Strategy Pattern) - {CODE-RYU};
     
    코드는 전략 패턴의 코드에 추가한다.
     
    package ex03; import ex03.lib.OuterRabbit; public class RabbitAdapter extends Animal{ private OuterRabbit outerRabbit ; public RabbitAdapter(OuterRabbit outerRabbit) { this.outerRabbit = outerRabbit; } @Override public String getName() { return outerRabbit.getFullname(); } }
     
    💡
    RabbitAdapter 라는 클래스를 새롭게 만든다. RabbitAdapter 클래스는 Animal 클래스를 상속받은 후 , OuterRabbit 을 변수로 받는다. 그리고 outerRabbit.getFullname() 를 리턴해주면 된다.
     
    notion image
    Share article

    {CODE-RYU};

    RSS·Powered by Inblog