首頁> 資訊 > > 正文

設計模式-適配器模式

2023-05-04 16:33:33來源:騰訊云


【資料圖】

適配器模式是一種結構型設計模式,它用于將一個類的接口轉換成另一個接口,以便于兩個不兼容的接口能夠一起工作。適配器模式有時也被稱為包裝器模式。

適配器模式包含以下角色:

目標接口(Target Interface):定義客戶端所需的接口,這是客戶端代碼調用的接口。適配器(Adapter):適配器是一個類,它實現目標接口并且包含一個對被適配對象的引用。被適配對象(Adaptee):被適配對象是一個已經存在的對象,它的接口與目標接口不兼容??蛻舳耍–lient):客戶端通過目標接口調用適配器的方法來與被適配對象進行交互。

下面是一個適配器模式的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 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");      }   }   }

這個例子中,客戶端調用了 MediaPlayer接口的 play方法。如果傳入的文件類型是 mp3,則直接在 AudioPlayer類中播放,否則就通過適配器模式實現播放其他格式的音頻文件。當需要播放不支持的音頻格式時,AudioPlayer類會創建一個 MediaAdapter對象,該對象可以將不支持的音頻格式轉換成支持的格式,然后調用 MediaPlayer接口的 play方法來播放該格式的音頻文件。

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

標簽:

上一篇:全球聚焦:供電暫時中斷!明天起至5月7日計劃檢修公告,天津這個區將受影響,你家在內嗎
下一篇:最后一頁
欧洲成人午夜精品无码区久久| 国产精品久久久久久影视| 国产精品毛片a∨一区二区三区| 国产精品久久久久久亚洲影视| 国内精品人妻无码久久久影院| 久久精品国产导航| 亚洲国产精品婷婷久久| 一本精品99久久精品77| 香蕉久久夜色精品国产2020| 亚洲av永久无码精品网站| 合区精品中文字幕| 精品久久久久久无码人妻中文字幕| 久久91精品国产91久久| 国产午夜精品理论片| 国产精品亚洲а∨天堂2021| 2020国产精品| 99国产精品视频免费观看| 亚洲中文字幕无码久久精品1 | 亚洲国产精品无码久久久蜜芽| 精品人妻一区二区三区四区在线| 国产精品综合AV一区二区国产馆| 亚洲综合国产精品| 国产一成人精品福利网站| 国产精品国产三级在线专区| 国产精品情侣自拍| 精品人妻无码一区二区色欲产成人 | 亚洲精品无码mⅴ在线观看| 少妇精品久久久一区二区三区 | 日韩精品久久久久久久电影| 久久亚洲精品成人AV| 国产精品兄妹在线观看麻豆| 国内精品国产成人国产三级| 亚洲AV成人精品日韩一区18p | 国产精品香蕉在线观看| 国产精品嫩草影院在线播放 | 国产精品高清2021在线| 精品人妻人人做人人爽夜夜爽| 成人精品国产亚洲欧洲| 国产精品玖玖玖在线资源| 国产精品无码AV不卡| 亚洲中文字幕久久精品无码A |