어댑터 패턴(adapter pattern)

JunSeong_Park·2022년 12월 31일
0
post-custom-banner

Adapter Pattern

어뎁터는 서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것

Adapter Pattern 은 OCP ( Open Closed Principle ) 를 활용한 설계 패턴

Ex )

Adapter 를 적용하지 않은 상태

public class ServiceA {
    void runServiceA() {
        System.out.println("serviceA");
    }
}
public class ServiceB {
    void runServiceB() {
        System.out.println("serviceB");
    }
}
public class ClientWithNoAdapter {
    public static void main(String[] args) {
        ServiceA sa = new ServiceA();
        ServiceB sa = new ServiceB();

        sa.runServiceA();
        sa.runServiceB();
    }
}
  1. ClientWithNoAdapter 에서 ServiceA 와 ServiceB 객체 생성
  2. ServiceA 에서 runServiceA() 호출
  3. ServiceB 에서 runServiceB() 호출

Adapter 를 적용한 상태

public class AdapterServiceA {
    ServiceA sa = new ServiceA();

    void runService() {
        sa.runServiceA();
    }
}
public class AdapterServiceB {
    ServiceB sb = new ServiceB();

    void runService() {
        sb.runServiceB();
    }
}
public class ClientWithAdapter {
    public static void main(String [] args) {
        AdapterServiceA asa = new AdapterServiceA();
        AdapterServiceB asb = new AdapterServiceB();

        asa.runService();
        asb.runService();
    }
}
  1. ClientWithAdapter → AdapterServiceA 변환기 생성 → ServiceA 객체 생성
  2. ClientWithAdapter → AdapterServiceB 변환기 생성 → ServiceB 객체 생성
  3. AdapterServiceA → runService() 호출 → ServiceA 객체 → runServiceA() 호출
  4. AdapterServiceB → runService() 호출 → ServiceB 객체 → runServiceB() 호출

Adapter Pattern 은 합성 , 즉 객체를 속성으로 만들어서 참조하는 디자인 패턴

호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴

출처 : 스프링 입문을 위한 자바

profile
안녕하세요 언어에 구애 받지 않는 개발자가 되고 싶은 박준성입니다
post-custom-banner

0개의 댓글