어댑터 패턴은 호환되지 않는 개체가 함께 작동할 수 있도록 하는 구조적 디자인 패턴으로, 개체가 원활하게 상호 작용할 수 있도록 하나의 인터페이스를 다른 인터페이스로 변환합니다. 객체 어댑터는 적응된 객체를 포함하는 어댑터 객체를 생성하고 대상 인터페이스를 구현하여 어댑터 패턴을 구현합니다. 실제 사례에서 클라이언트(예: MediaPlayer)는 어댑터 모드를 통해 고급 형식(예: VLC)의 미디어를 재생할 수 있지만 클라이언트 자체는 일반 미디어 형식(예: MP3)만 지원합니다.
Java 디자인 패턴에서 어댑터 패턴의 놀라운 사용
소개
어댑터 패턴은 한 객체가 호환되지 않는 인터페이스를 가진 다른 객체와 함께 작동할 수 있도록 하는 구조적 디자인 패턴입니다. 즉, 하나의 인터페이스를 다른 인터페이스로 변환하여 호환되지 않는 두 개체가 원활하게 상호 작용할 수 있도록 합니다.
구조
어댑터 패턴의 구조는 아래와 같습니다.
+--------------------+ | Target | +--------------------+ ^ | +--------------------+ | Adaptee(被适配) | +--------------------+ ^ | +----------------------------+ | Object Adapter (对象适配器) | +----------------------------+ | | \_______________/
객체 어댑터
객체 어댑터는 어댑터 패턴을 구현하는 간단한 방법입니다. 이는 Adaptee 개체를 포함하고 Target 인터페이스를 구현하는 새 어댑터 개체를 생성합니다.
// Target 接口 interface Target { int operation(); } // Adaptee 接口 interface Adaptee { int specificOperation(); } // Adapter (对象适配器) class Adapter implements Target { private final Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } @Override public int operation() { return adaptee.specificOperation(); } }
실용 사례
MediaPlayer와 AdvancedMediaPlayer라는 두 가지 클래스가 있다고 가정해 보겠습니다. MediaPlayer 클래스는 일반 형식(예: MP3)의 미디어 재생을 담당하고, AdvancedMediaPlayer 클래스는 고급 형식(예: VLC)의 미디어 재생을 담당합니다. 어댑터 패턴을 사용하여 MediaPlayer 클래스를 활성화하여 고급 형식 미디어를 재생할 것입니다.
class MediaPlayer { public void playMP3(String filename) { System.out.println("Playing MP3: " + filename); } } class AdvancedMediaPlayer { public void playVLC(String filename) { System.out.println("Playing VLC: " + filename); } } class MediaAdapter implements MediaPlayer { private final AdvancedMediaPlayer advancedMediaPlayer; public MediaAdapter(AdvancedMediaPlayer advancedMediaPlayer) { this.advancedMediaPlayer = advancedMediaPlayer; } @Override public void playMP3(String filename) { advancedMediaPlayer.playVLC(filename); } } // 客户调用 MediaPlayer audioPlayer = new MediaAdapter(new AdvancedMediaPlayer()); audioPlayer.playMP3("FileName.vlc");
출력:
Playing VLC: FileName.vlc
어댑터 패턴을 사용하여 소스 코드를 수정하지 않고도 고급 형식 미디어를 재생할 수 있도록 MediaPlayer 클래스의 기능을 확장합니다.
위 내용은 Java 디자인 패턴에서 어댑터 패턴의 놀라운 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!