適配器模式是在已經(jīng)存在類(lèi)與對(duì)象的情況下,有第三方需要使用這個(gè)類(lèi),但是由于參數(shù)不對(duì),需要一個(gè)適配模式幫助,使得第三方也能使用這個(gè)類(lèi)的一種模式。
優(yōu)點(diǎn):可以讓沒(méi)有關(guān)系的兩個(gè)類(lèi)有所關(guān)聯(lián)。提高類(lèi)的復(fù)用。
缺點(diǎn):過(guò)多使用適配器,系統(tǒng)會(huì)不易維護(hù)。
不推薦使用。我們編程的兩大原則:面向?qū)ο缶幊毯兔嫦蚪涌诰幊?。?dāng)由于業(yè)務(wù)需要,必須修改一個(gè)已經(jīng)正常運(yùn)行的系統(tǒng)的接口時(shí),可以考慮使用適配器模式。
舉例:
假定我們現(xiàn)在有已存在的兩組功能,視頻播放和音頻播放。
public interface MediaPlayer {
public void play(String audioType,String fileName);
}
public interface AdvanceMediaPlayer {
public void playVlc(String fileName);
public void playMp4(String fileName);
}
public class MediaAdapter implements MediaPlayer{
public AdvancedMediaPlayer advancedMusicPlayer;
public MediaAdapter(String auditType){
if(auditType.equalsIngnoreCase("vlc")){
advancedMusicPlayer = new VlcPlayer();
} else if (auditType.equalsIngnoreCase("mp4")){
advancedMusicPlayer = new Mp4Player();
}
}
@Override
public void play(String auditType,String fileName){
if(auditType.equalsIngnoreCase("vlc")){
advancedMusicPlayer.playVlc();
}else if(auditType.equalsIngnoreCase("mp4")){
advancedMusicPlayer.playMp4();
}
}
}
通過(guò)MediaAdapter類(lèi)我們就可以通過(guò)AudioPlayer來(lái)播放MediaPlayer.