inblog logo
|
하쎄의 기술 일기장
    Design Pattern

    4. 어댑터 패턴(Adapter Pattern)

    [IntelliJ] 어댑터 패턴의 사용방법과 이해
    하세연's avatar
    하세연
    Aug 13, 2024
    4. 어댑터 패턴(Adapter Pattern)
    Contents
    예제)
    💡
    어댑터 패턴(Adapter Pattern)은 서로 호환되지 않는 인터페이스를 가진 클래스들이 함께 작동할 수 있도록 변환해주는 구조적 디자인 패턴입니다. 어댑터 패턴은 클래스의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 변환함으로써, 기존 클래스를 수정하지 않고도 서로 다른 시스템 간의 호환성을 확보할 수 있습니다.
    - 어댑터가 존재하지 않아 호환 불가능한 경우
    - 어댑터가 존재하지 않아 호환 불가능한 경우
    - 어댑터를 사용하여 호환 가능한 경우
    - 어댑터를 사용하여 호환 가능한 경우

    예제)

    public class App { public static void main(String[] args) { Mouse m1 = new Mouse(); Tiger t1 = new Tiger(); Doorman d1 = new Doorman(); d1.쫓아내(t1); } } public abstract class Animal { public abstract String getName(); } public class Mouse extends Animal { private String name ="쥐"; public String getName() { return name; } } public class Tiger extends Animal { private String name ="호랑이"; public String getName() { return name; } } public class Doorman { // 쥐 출입금지 public void 쫓아내(Animal m){ System.out.println(m.getName()+"쫓아내"); } }
    기존 코드에서 외부 다른 동물들을 추가하여 코드를 추가할 때, 어댑터 패턴을 사용할 수 있다.
    public class OuterRabbit { private String fullname = "토끼"; public String getFullname() { return fullname; } }
    토끼라는 동물을 추가하면서 Animal을 extends 로 받지 않고 추가하기 위해서 어댑터 역할을 하는 부분이 필요하다.
    public class RabbitAdapter extends Animal { public OuterRabbit rabbit; public RabbitAdapter(OuterRabbit rabbit) { this.rabbit = rabbit; } @Override public String getName() { return rabbit.getFullname(); } } public class App { public static void main(String[] args) { Mouse m1 = new Mouse(); Tiger t1 = new Tiger(); Doorman d1 = new Doorman(); d1.쫓아내(t1); RabbitAdapter rabbit = new RabbitAdapter(new OuterRabbit()); d1.쫓아내(rabbit); } }
    다음과 같이 RabbitAdapter를 이용하여 기존 main에서 사용하는 getName을 getFullname과 연결 시켜준다.
    Share article

    하쎄의 기술 일기장

    RSS·Powered by Inblog