首頁 行業 活動 項目 快訊 文娛 時尚 娛樂 科技 汽車 綜合 生活

    設計模式-適配器模式示例

    2023-05-04 04:42:03 來源:騰訊云


    (資料圖)

    下面是一個完整的適配器模式的Java代碼示例:

    // 目標接口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 音樂文件的內置支持      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");   }}

    輸出結果如下:

    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

    在這個示例中,適配器模式將一個不支持的音頻格式轉換成了支持的格式,并通過適配器的方式來實現播放。具體而言,AudioPlayer類作為客戶端調用 MediaPlayer接口的 play方法。如果需要播放的音頻格式是不支持的,AudioPlayer將會創建一個適配器對象,并通過該適配器對象來播放音頻。

    在適配器模式的示例中,有以下幾個角色:

    目標接口:MediaPlayer接口定義了 play方法,用于播放音頻文件。被適配對象:VlcPlayerMp4Player類表示兩種不兼容的音頻格式,不能直接播放。適配器:MediaAdapter類實現了 MediaPlayer接口,同時包含一個被適配對象的引用。MediaAdapter類將不支持的音頻格式轉換成支持的格式,并通過被適配對象來實現播放??蛻舳耍?code>AudioPlayer類作為客戶端,使用 MediaPlayer接口來播放音頻文件。如果需要播放的音頻格式不支持,AudioPlayer將會創建一個適配器對象,通過適配器來實現播放。

    適配器模式的優點在于它可以將兩個不兼容的接口進行連接,從而實現代碼的復用和擴展性的提高。如果有新的音頻格式需要支持,只需要實現一個新的適配器即可。

    另外,適配器模式可以提高代碼的可讀性和可維護性。它可以將不相關的代碼放在不同的類中,從而使代碼更易于理解和維護。

    關鍵詞:

    上一篇:wdzbryy是什么電纜 wdzbnyjy是什么電纜|全球今亮點

    下一篇:主播說聯播丨五四前夕,習近平總書記為這種精神點贊!-今日聚焦

    責任編輯:

    最近更新

    點擊排行
    推薦閱讀

    亚洲成人免费网站| 亚洲人成依人成综合网| 无码专区—VA亚洲V天堂| 亚洲国产成人AV网站| 中文字幕亚洲综合小综合在线| 亚洲色欲或者高潮影院| 亚洲精品综合一二三区在线| 精品亚洲一区二区| 亚洲日产无码中文字幕| 伊人亚洲综合青草青草久热| 亚洲人成无码久久电影网站| 亚洲AV永久无码精品一区二区国产| 亚洲精品无码专区在线播放| 亚洲欧美日韩久久精品| 亚洲精品无码久久久久A片苍井空| 自拍偷区亚洲国内自拍| 亚洲一线产品二线产品| 亚洲字幕AV一区二区三区四区| 亚洲一区二区三区高清在线观看 | 中文字幕亚洲一区| 亚洲性久久久影院| 久久久久亚洲av成人无码电影| 亚洲真人日本在线| 亚洲自偷自偷图片| 国产V亚洲V天堂无码久久久| 久久精品国产亚洲AV麻豆王友容| 婷婷亚洲久悠悠色悠在线播放| 亚洲一区二区影院| 亚洲精品中文字幕乱码影院 | 伊在人亚洲香蕉精品区麻豆| 无码国产亚洲日韩国精品视频一区二区三区 | 亚洲AV无码欧洲AV无码网站| 亚洲大片在线观看| 亚洲国产中文在线视频| 在线观看亚洲AV每日更新无码| 鲁死你资源站亚洲av| 亚洲综合色视频在线观看| 狠狠色伊人亚洲综合成人| 亚洲图片一区二区| 亚洲人成网男女大片在线播放| 亚洲国产欧美一区二区三区|