프로그래밍/자바 디자인 패턴
자바 디자인 패턴 튜토리얼 - 구조 설계 패턴 - 어댑터 패턴
Ericlee
2021. 4. 18. 02:45
반응형
우리는 실생활에서 어댑터를 많이 사용합니다. 예를 들어, 메모리 카드 어댑터는 컴퓨터가 한 종류의 메모리 카드만 지원하고 다른 종류의 메모리카드가 컴퓨터와 호환되지 않기 때문에 메모리 카드와 컴퓨터를 연결하는 데 사용됩니다.
어댑터는 호환되지 않는 두 엔터티 사이의 변환기입니다. 그래서 어댑터 패턴은 구조 패턴입니다.
자바 디자인 패턴에서 어댑터 패턴은 호환되지 않는 두 인터페이스 사이의 다리 역할을합니다.
어댑터 패턴을 사용하여 호환되지 않는 두 인터페이스를 통합 할 수 있습니다.
예제
먼저 미디어 파일을 재생할 Player 인터페이스를 만듭니다.
MyPlayer는 어댑터이며 미디어 파일 재생의 인터페이스를 통합합니다.
interface Player { public void play(String type, String fileName); } interface AudioPlayer { public void playAudio(String fileName); } interface VideoPlayer { public void playVideo(String fileName); } class MyAudioPlayer implements AudioPlayer { @Override public void playAudio(String fileName) { System.out.println("Playing. Name: "+ fileName); } } class MyVideoPlayer implements VideoPlayer { @Override public void playVideo(String fileName) { System.out.println("Playing. Name: "+ fileName); } } class MyPlayer implements Player { AudioPlayer audioPlayer = new MyAudioPlayer(); VideoPlayer videoPlayer = new MyVideoPlayer(); public MyPlayer(){ } @Override public void play(String audioType, String fileName) { if(audioType.equalsIgnoreCase("avi")){ videoPlayer.playVideo(fileName); }else if(audioType.equalsIgnoreCase("mp3")){ audioPlayer.playAudio(fileName); } } } public class Main{ public static void main(String[] args) { MyPlayer myPlayer = new MyPlayer(); myPlayer.play("mp3", "h.mp3"); myPlayer.play("avi", "me.avi"); } }
위의 코드는 다음 결과를 생성합니다.
Playing. Name: h.mp3
Playing. Name: mr.avi
반응형