適配器模式一般是在我們要把”現有的對象“應用到新的環境中時使用,通過編寫一個Adapter類,把原有的類應用到新的類中,而不必修改原有類,也不必重寫已有類。
如下圖所示,原有一個AdvancedPlayer接口類,可以播放flv和MP4格式的視頻文件。現在新建了一個MediaPlayer接口類,使之可以播放MP3、flv和MP4格式的文件。
因為已有AdvancedPlayer接口類實現了播放flv和MP4格式的文件,現在只需要編寫一個播放MP3格式文件的AudioPlayer實現類和一個Adapter實現類,在Adapter類中使用AdvancedPlayer類的對象,使之可以播放flv和MP4類型的文件。
AdvancedPlayer接口類:
package adapter;
public interface AdvancedPlayer {
public void playFlv();
public void playMP4();
}
FlvPlayer實現類:
package adapter;
public class FlvPlayer implements AdvancedPlayer {
@Override
public void playFlv() {
System.out.println("播放Flv格式文件");
}
@Override
public void playMP4() {
}
}
MP4Player實現類:
package adapter;
public class MP4Player implements AdvancedPlayer{
@Override
public void playFlv() {
}
@Override
public void playMP4() {
System.out.println("播放MP4文件");
}
}
MediaPlayer接口類:
package adapter;
public interface MediaPlayer {
public void play(String audioType, String fileName);
}
AudioPlayer實現類:
package adapter;
public class AudioPlayer implements MediaPlayer {
Adapter adapter;
@Override
public void play(String audioType, String fileName) {
if(audioType.equals("MP3")) {
System.out.println("播放MP3:"+fileName);
}else if(audioType.equals("flv")||audioType.equals("MP4")) {
adapter=new Adapter(audioType);
adapter.play(audioType, fileName);
}else {
System.out.println("文件格式未知");
}
}
}
Adapter適配器實現類:
package adapter;
public class Adapter implements MediaPlayer{
AdvancedPlayer advancedPlayer;
public Adapter(String audioType) {
if(audioType.equals("flv")) {
advancedPlayer =new FlvPlayer();
}else if(audioType.equals("MP4")) {
advancedPlayer = new MP4Player();
}
}
@Override
public void play(String audioType,String fileName) {
if(audioType.equals("flv")){
advancedPlayer.playFlv();
}else if(audioType.equals("MP4")) {
advancedPlayer.playMP4();
}
}
}
主函數調用方式:
package main;
import adapter.*;
public class AdapterPattern {
public static void main(String[] args) {
AudioPlayer audioPlayer=new AudioPlayer();
audioPlayer.play("flv", "視頻.flv");
audioPlayer.play("MP4", "視頻.MP4");
audioPlayer.play("MP3", "音樂.MP3");
}
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
適配器
+關注
關注
8文章
1933瀏覽量
67930 -
audio
+關注
關注
1文章
319瀏覽量
59200 -
AudioPlayer
+關注
關注
0文章
2瀏覽量
1433
發布評論請先 登錄
相關推薦
適配器模式和代理模式的區別
對象可以在客戶端和目標對象之間起到中介的作用,這樣起到了中介的作用和保護了目標對象的作用。 (3)高擴展性 適配器模式 在計算機編程中,適配器模式(有時候也稱包裝樣式或者包裝
發表于 10-22 15:17
引適配器模式的作用
引適配器模式的作用是解決兩個軟件實體間的接口不兼容的問題。使用適配器模式之后,原本由于接口不兼容而不能工作的兩個軟件實體可以一起工作。港式插頭轉換器
發表于 11-11 06:30
什么是硬件適配器模式
硬件適配器模式提供一種方法,使已經存在的硬件接口能適應應用期望。當應用需要使用一個接口而硬件提供另一種時,硬件適配器模式創建元素在兩個接口之間進行轉換。
發表于 12-21 07:55
適配器模式的本質及分類
什么是適配器 在計算機編程中,適配器模式(有時候也稱包裝樣式或者包裝)把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。一個適配
發表于 10-18 15:06
?3144次閱讀
適配器模式和代理模式的區別
適配器模式:適配器模式有時候也稱包裝樣式或者包裝。將一個類的接口轉接成用戶所期待的。代理模式:為其他對象提供一種代理以控制對這個對象的訪問。
發表于 01-12 11:56
?5270次閱讀
適配器模式的應用
在計算機編程中,適配器模式(有時候也稱包裝樣式或者包裝)將一個類的接口適配成用戶所期待的。一個適配允許通常因為接口不兼容而不能在一起工作的類工作在一起,做法是將類自己的接口包裹在一個已
發表于 01-12 14:28
?998次閱讀
JavaScript設計模式之適配器模式
引適配器模式的作用是解決兩個軟件實體間的接口不兼容的問題。使用適配器模式之后,原本由于接口不兼容而不能工作的兩個軟件實體可以一起工作。港式插頭轉換器
發表于 11-06 16:21
?5次下載
什么是適配器模式?怎樣使用適配器模式進行貨幣轉換?
在軟件開發中,通常使用具有不兼容接口的現有代碼或外部庫。 適配器模式提供了一個優雅的解決方案,充當不兼容接口之間的橋梁,無需修改現有代碼即可實現無縫集成。
什么是適配器模式
1、什么是適配器模式? Convert the interface of a class into another interface clients expect.Adapter lets
評論