Java实现(06)——适配器模式(Adapter Pattern)
2016-12-07 20:35
405 查看
适配器模式用于连接两个不兼容的接口,生活中的一个例子就是笔记本需要通过读卡器读取内存卡中的数据,读卡器就相当于适配器。
本例中使用MediaAdapter继承MediaPlayer接口,同时使用AdvancedMediaPlayer中类的对象。
public interface AdvanceMediaPlayer {
public void playVlc(String fileName);
public void playMp4(String fileName);
}
Playing mp3 file. Name: beyond the horizon.mp3
Playing mp4 file. Name: alone.mp4
Playing vlc file. Name: far far away.vlc
Invalid media. avi format not supported
4000
本例中使用MediaAdapter继承MediaPlayer接口,同时使用AdvancedMediaPlayer中类的对象。
public interface AdvanceMediaPlayer {
public void playVlc(String fileName);
public void playMp4(String fileName);
}
public class Mp4Player implements AdvanceMediaPlayer { @Override public void playVlc(String fileName) { // do nothing } @Override public void playMp4(String fileName) { System.out.println("Playing mp4 file. Name: " + fileName); } }
public class VlcPlayer implements AdvanceMediaPlayer { @Override public void playVlc(String fileName) { System.out.println("Playing vlc file. Name: " + fileName); } @Override public void playMp4(String fileName) { // do nothing } }
public class MediaAdapter implements MediaPlayer { AdvanceMediaPlayer advanceMediaPlayer; public MediaAdapter(String audioType) { if (audioType.equalsIgnoreCase("vlc")) { advanceMediaPlayer = new VlcPlayer(); } else if (audioType.equalsIgnoreCase("mp4")) { advanceMediaPlayer = new Mp4Player(); } } @Override public void play(String audioType, String fileName) { if (audioType.equalsIgnoreCase("vlc")) { advanceMediaPlayer.playVlc(fileName); } else if (audioType.equalsIgnoreCase("mp4")) { advanceMediaPlayer.playMp4(fileName); } } }
public class AudioPlayer implements MediaPlayer { MediaPlayer mediaAdapter; @Override public void play(String audioType, String fileName) { if (audioType.equalsIgnoreCase("mp3")) { System.out.println("Playing mp3 file. Name: " + fileName); } 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"); } } }
public class Demo { 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"); } }输出:
Playing mp3 file. Name: beyond the horizon.mp3
Playing mp4 file. Name: alone.mp4
Playing vlc file. Name: far far away.vlc
Invalid media. avi format not supported
4000
相关文章推荐
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- Java设计模式之适配器模式(Adapter Pattern)
- 设计模式之适配器模式(Adapter Pattern)C++实现
- Java Adapter Pattern(适配器模式)
- Head First 设计模式 (七)适配器模式(adapter pattern) C++实现
- Java之适配器模式(Adapter Pattern)
- Java设计模式:适配器模式(Adapter Pattern)
- java设计模式——适配器模式(Adapter Pattern)
- Java23种设计模式之适配器模式(Adapter Pattern)
- JAVA设计模式之 适配器模式【Adapter Pattern】
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- Java设计模式--适配器模式【Adapter Pattern】
- Java设计模式之------(Adapter)适配器模式实现
- JAVA设计模式(06):结构型-适配器模式(Adapter)
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 适配器模式(Adapter Pattern)(C++实现)
- Java设计模式之适配器模式(Adapter Pattern)
- Java设计模式——适配器模式(Adapter Pattern)
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)