アダプター パターンは、互換性のないオブジェクトが連携できるようにする構造設計パターンであり、オブジェクトがスムーズに対話できるように、あるインターフェイスを別のインターフェイスに変換します。オブジェクト アダプタは、適応されたオブジェクトを含むアダプタ オブジェクトを作成し、ターゲット インターフェイスを実装することにより、アダプタ パターンを実装します。実際のケースでは、クライアント (MediaPlayer など) はアダプター モードを通じて高度な形式 (VLC など) のメディアを再生できますが、クライアント自体は一般的なメディア形式 (MP3 など) のみをサポートします。
Java デザイン パターンにおけるアダプター パターンの素晴らしい使用方法
はじめに
アダプター パターンは、あるオブジェクトが、互換性のないインターフェイスを持つ別のオブジェクトと連携できるようにする構造的なデザイン パターンです。言い換えれば、あるインターフェイスを別のインターフェイスに変換し、互換性のない 2 つのオブジェクトがスムーズに対話できるようにします。
構造
アダプターパターンの構造は以下の通りです:
+--------------------+ | Target | +--------------------+ ^ | +--------------------+ | Adaptee(被适配) | +--------------------+ ^ | +----------------------------+ | Object Adapter (对象适配器) | +----------------------------+ | | \_______________/
オブジェクト アダプター
オブジェクト アダプターは、アダプター パターンを実装する簡単な方法です。これは、Adapte オブジェクトを含む新しいアダプター オブジェクトを作成し、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 という 2 つのクラスがあるとします。 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 中国語 Web サイトの他の関連記事を参照してください。