(資料圖)
下面是一個完整的適配器模式的Java代碼示例:
// 目標(biāo)接口public interface MediaPlayer { public void play(String audioType, String fileName);}// 被適配對象public class Mp4Player { public void playMp4(String fileName) { System.out.println("Playing mp4 file. Name: "+ fileName); }}// 被適配對象public class VlcPlayer { public void playVlc(String fileName) { System.out.println("Playing vlc file. Name: "+ fileName); }}// 適配器public class MediaAdapter implements MediaPlayer { AdvancedMediaPlayer advancedMusicPlayer; public MediaAdapter(String audioType){ if(audioType.equalsIgnoreCase("vlc") ){ advancedMusicPlayer = new VlcPlayer(); }else if (audioType.equalsIgnoreCase("mp4")){ advancedMusicPlayer = new Mp4Player(); } } @Override public void play(String audioType, String fileName) { if(audioType.equalsIgnoreCase("vlc")){ advancedMusicPlayer.playVlc(fileName); }else if(audioType.equalsIgnoreCase("mp4")){ advancedMusicPlayer.playMp4(fileName); } }}// 客戶端public class AudioPlayer implements MediaPlayer { MediaAdapter mediaAdapter; @Override public void play(String audioType, String fileName) { //播放 mp3 音樂文件的內(nèi)置支持 if(audioType.equalsIgnoreCase("mp3")){ System.out.println("Playing mp3 file. Name: " + fileName); } //mediaAdapter 提供了播放其他文件格式的支持 else if(audioType.equalsIgnoreCase("vlc") || audioType.equalsIgnoreCase("mp4")){ mediaAdapter = new MediaAdapter(audioType); mediaAdapter.play(audioType, fileName); } else{ System.out.println("Invalid media. " + audioType + " format not supported"); } } }// 測試代碼public class AdapterPatternDemo { public static void main(String[] args) { AudioPlayer audioPlayer = new AudioPlayer(); audioPlayer.play("mp3", "beyond the horizon.mp3"); audioPlayer.play("mp4", "alone.mp4"); audioPlayer.play("vlc", "far far away.vlc"); audioPlayer.play("avi", "mind me.avi"); }}
輸出結(jié)果如下:
Playing mp3 file. Name: beyond the horizon.mp3Playing mp4 file. Name: alone.mp4Playing vlc file. Name: far far away.vlcInvalid media. avi format not supported
在這個示例中,適配器模式將一個不支持的音頻格式轉(zhuǎn)換成了支持的格式,并通過適配器的方式來實現(xiàn)播放。具體而言,AudioPlayer
類作為客戶端調(diào)用 MediaPlayer
接口的 play
方法。如果需要播放的音頻格式是不支持的,AudioPlayer
將會創(chuàng)建一個適配器對象,并通過該適配器對象來播放音頻。
在適配器模式的示例中,有以下幾個角色:
目標(biāo)接口:MediaPlayer
接口定義了 play
方法,用于播放音頻文件。被適配對象:VlcPlayer
和 Mp4Player
類表示兩種不兼容的音頻格式,不能直接播放。適配器:MediaAdapter
類實現(xiàn)了 MediaPlayer
接口,同時包含一個被適配對象的引用。MediaAdapter
類將不支持的音頻格式轉(zhuǎn)換成支持的格式,并通過被適配對象來實現(xiàn)播放。客戶端:AudioPlayer
類作為客戶端,使用 MediaPlayer
接口來播放音頻文件。如果需要播放的音頻格式不支持,AudioPlayer
將會創(chuàng)建一個適配器對象,通過適配器來實現(xiàn)播放。適配器模式的優(yōu)點在于它可以將兩個不兼容的接口進(jìn)行連接,從而實現(xiàn)代碼的復(fù)用和擴(kuò)展性的提高。如果有新的音頻格式需要支持,只需要實現(xiàn)一個新的適配器即可。
另外,適配器模式可以提高代碼的可讀性和可維護(hù)性。它可以將不相關(guān)的代碼放在不同的類中,從而使代碼更易于理解和維護(hù)。
責(zé)任編輯: