[java] 어댑터 패턴

어댑터 패턴은 한 인터페이스를 다른 인터페이스로 변환하는 구조적 패턴입니다. 주로 이미 존재하는 클래스나 라이브러리에 재사용성을 높이기 위해 적용됩니다.

어댑터 패턴의 구성 요소

어댑터 패턴은 크게 아래 세 가지 요소로 이루어집니다:

  1. 타겟 인터페이스 (Target Interface): 어댑터가 중개하는 인터페이스입니다.
  2. 클라이언트 (Client): 타겟 인터페이스를 사용하는 코드입니다.
  3. 어댑터 (Adapter): 클라이언트와 기존 클래스를 연결하는 클래스로, 어댑터는 타겟 인터페이스를 구현하고 기존 클래스의 인터페이스를 호출합니다.

어댑터 패턴의 예시

예를 들어, 미국 표준 전기 소켓유럽 표준 전기 소켓을 연결하는 어댑터가 있다고 가정해봅시다. 이때, 어댑터는 미국 표준 소켓을 입력으로 받아 유럽 표준 소켓으로 출력될 수 있도록 중간에서 변환기능을 수행합니다.

// 타겟 인터페이스: 유럽 표준 소켓
public interface EuropeanSocket {
    public void provideElectricity();
}

// 어댑터: 미국 표준 소켓을 유럽 표준 소켓으로 연결
public class SocketAdapter implements EuropeanSocket {
    private USSocket usSocket;

    public SocketAdapter(USSocket usSocket) {
        this.usSocket = usSocket;
    }

    @Override
    public void provideElectricity() {
        usSocket.use();
    }
}

// 클라이언트: 유럽 표준 소켓 사용
public class Client {
    public static void main(String[] args) {
        USSocket usSocket = new USSocket();
        EuropeanSocket socketAdapter = new SocketAdapter(usSocket);
        socketAdapter.provideElectricity();
    }
}

어댑터 패턴의 장단점

어댑터 패턴을 사용함으로써 클라이언트 코드를 수정하지 않고 새로운 인터페이스에 맞추어 기존의 클래스를 사용할 수 있습니다.
하지만, 여러 개의 어댑터 클래스가 필요하거나 성능 저하가 있을 수 있습니다.

어댑터 패턴은 소프트웨어 개발에서 유연성과 재사용성을 확보하기 위한 중요한 구조적 패턴 중 하나입니다.


더 많은 정보를 원한다면 “디자인 패턴”을 참고하세요.