国産精品久久久久久久AV超碰_杨幂一级毛片在线播放_性色AV闺蜜一区二区三区_极品无码小泬抖音在线观看_久久国产免费一区二区三区

首頁(yè) >文化 > 正文

全球聚焦:設(shè)計(jì)模式-適配器模式示例

2023-05-05 12:35:25 來(lái)源:騰訊云


【資料圖】

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

// 目標(biāo)接口public interface MediaPlayer {   public void play(String audioType, String fileName);}// 被適配對(duì)象public class Mp4Player {   public void playMp4(String fileName) {      System.out.println("Playing mp4 file. Name: "+ fileName);    }}// 被適配對(duì)象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 音樂(lè)文件的內(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");      }   }   }// 測(cè)試代碼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

在這個(gè)示例中,適配器模式將一個(gè)不支持的音頻格式轉(zhuǎn)換成了支持的格式,并通過(guò)適配器的方式來(lái)實(shí)現(xiàn)播放。具體而言,AudioPlayer類作為客戶端調(diào)用 MediaPlayer接口的 play方法。如果需要播放的音頻格式是不支持的,AudioPlayer將會(huì)創(chuàng)建一個(gè)適配器對(duì)象,并通過(guò)該適配器對(duì)象來(lái)播放音頻。

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

目標(biāo)接口:MediaPlayer接口定義了 play方法,用于播放音頻文件。被適配對(duì)象:VlcPlayerMp4Player類表示兩種不兼容的音頻格式,不能直接播放。適配器:MediaAdapter類實(shí)現(xiàn)了 MediaPlayer接口,同時(shí)包含一個(gè)被適配對(duì)象的引用。MediaAdapter類將不支持的音頻格式轉(zhuǎn)換成支持的格式,并通過(guò)被適配對(duì)象來(lái)實(shí)現(xiàn)播放。客戶端:AudioPlayer類作為客戶端,使用 MediaPlayer接口來(lái)播放音頻文件。如果需要播放的音頻格式不支持,AudioPlayer將會(huì)創(chuàng)建一個(gè)適配器對(duì)象,通過(guò)適配器來(lái)實(shí)現(xiàn)播放。

適配器模式的優(yōu)點(diǎn)在于它可以將兩個(gè)不兼容的接口進(jìn)行連接,從而實(shí)現(xiàn)代碼的復(fù)用和擴(kuò)展性的提高。如果有新的音頻格式需要支持,只需要實(shí)現(xiàn)一個(gè)新的適配器即可。

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

標(biāo)簽:

x 廣告
x 廣告

Copyright ©   2015-2022 太平洋影視網(wǎng)版權(quán)所有  備案號(hào):豫ICP備2022016495號(hào)-17   聯(lián)系郵箱:93 96 74 66 9@qq.com