어댑터 패턴

헤일리의 개발 일지·2025년 4월 14일

어댑터 패턴

서로 맞지 않는 인터페이스를 이어주는 중간 다리 역할을 하는 디자인 패턴

🧠 개념 설명

  • 어떤 클래스의 인터페이스가 내가 원하는 방식과 다를 때, 그걸 사용하기 좋게 바꿔주는 중간 객체를 만들어서 연결해주는 패턴
  • 마치 220V 콘센트에 110V 전기 제품을 쓰고 싶을 때, 변압기를 사용하는 것과 비슷!

⌨️ 예제

상황: MediaPlayer만 알고 있음

// 내가 사용하는 인터페이스
public interface MediaPlayer {
    void play(String audioType, String fileName);
}
  • 어뎁터 클래스 만들기
public class MediaAdapter implements MediaPlayer {

    private AdvancedPlayer advancedPlayer = new AdvancedPlayer();

    @Override
    public void play(String audioType, String fileName) {
        if (audioType.equalsIgnoreCase("mp4")) {
            advancedPlayer.playMp4(fileName);
        } else if (audioType.equalsIgnoreCase("vlc")) {
            advancedPlayer.playVlc(fileName);
        } else {
            System.out.println("지원하지 않는 형식입니다.");
        }
    }
}
  • 사용하기
public class AudioPlayer implements MediaPlayer {
    private MediaAdapter adapter;

    @Override
    public void play(String audioType, String fileName) {
        adapter = new MediaAdapter();
        adapter.play(audioType, fileName);
    }
}
public class Main {
    public static void main(String[] args) {
        MediaPlayer player = new AudioPlayer();
        player.play("mp4", "movie.mp4");  // 외부 클래스지만 내가 쓸 수 있음!
        player.play("vlc", "music.vlc");
    }
}

👍 장점

  • 유연성: 기존 코드를 수정하지 않고 새로운 기능에 연결 가능
  • 재사용성: 외부 라이브러리, 레거시 코드도 내 코드에 맞게 변환 가능
  • 유지보수 용이: 중간 어댑터만 바꾸면 다른 코드 건들 필요 없음

0개의 댓글