Java 適配器模式

2018-01-17 18:32 更新

 Java設(shè)計(jì)模式 - 適配器模式


我們?cè)诂F(xiàn)實(shí)生活中使用適配器很多。例如,我們使用存儲(chǔ)卡適配器連接存儲(chǔ)卡和計(jì)算機(jī),因?yàn)橛?jì)算機(jī)僅支持一種類型的存儲(chǔ)卡,并且我們的卡與計(jì)算機(jī)不兼容。

適配器是兩個(gè)不兼容實(shí)體之間的轉(zhuǎn)換器。適配器模式是一種結(jié)構(gòu)模式。

在Java設(shè)計(jì)模式中,適配器模式作為兩個(gè)不兼容接口之間的橋梁。

通過使用適配器模式,我們可以統(tǒng)一兩個(gè)不兼容的接口。

例子

首先我們創(chuàng)建一個(gè)播放器界面來播放任何時(shí)間的媒體文件。

MyPlayer是適配器,它統(tǒng)一了播放媒體文件的接口。

interface Player {
   public void play(String type, String fileName);
}
interface AudioPlayer {  
   public void playAudio(String fileName);
}
interface VideoPlayer {  
   public void playVideo(String fileName);
}
class MyAudioPlayer implements AudioPlayer {
   @Override
   public void playAudio(String fileName) {
      System.out.println("Playing. Name: "+ fileName);    
   }
}
class MyVideoPlayer implements VideoPlayer {
   @Override
   public void playVideo(String fileName) {
      System.out.println("Playing. Name: "+ fileName);    
   }
}

class MyPlayer implements Player {

   AudioPlayer audioPlayer = new MyAudioPlayer();
   VideoPlayer videoPlayer = new MyVideoPlayer();
   
   public MyPlayer(){      
   }
   @Override
   public void play(String audioType, String fileName) {
      if(audioType.equalsIgnoreCase("avi")){
         videoPlayer.playVideo(fileName);
      }else if(audioType.equalsIgnoreCase("mp3")){
         audioPlayer.playAudio(fileName);
      }
   }
}
public class Main{
   public static void main(String[] args) {
      MyPlayer myPlayer = new MyPlayer();

      myPlayer.play("mp3", "h.mp3");
      myPlayer.play("avi", "me.avi");
   }
}

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)