서로 맞지 않는 인터페이스를 이어주는 중간 다리 역할을 하는 디자인 패턴
상황: 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");
}
}