适配器模式
来源:互联网 发布:淘宝停留时间怎么看 编辑:程序博客网 时间:2024/06/05 07:57
作为两个不兼容接口的桥梁。比如读卡器。
现有的类不能满足现有的接口需要,通过继承或者依赖实现!
接口A。接口B. 适配器。
接口B要使用接口A的功能。适配器中使用A的实现类,实现A的功能,B实现适配器接口的功能。
主要解决正常运行系统的接口:
1接口一实现(实现增强功能)
public interface MediaPlayer { public void play(String audioType, String fileName);}public interface AdvancedMediaPlayer { public void playVlc(String fileName); public void playMp4(String fileName);}public class VlcPlayer implements AdvancedMediaPlayer{ @Override public void playVlc(String fileName) { System.out.println("Playing vlc file. Name: "+ fileName); } @Override public void playMp4(String fileName) { //什么也不做 }}public class Mp4Player implements AdvancedMediaPlayer{ @Override public void playVlc(String fileName) { //什么也不做 } @Override public void playMp4(String fileName) { System.out.println("Playing mp4 file. Name: "+ fileName); }}
2.接口2
public interface MediaPlayer { public void play(String audioType, String fileName);}
3.适配器类
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); } }}
4.实现类-2
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"); } } }
测试
public class AdapterPatternDemo { 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"); }}
阅读全文
0 0
- 适配器及适配器模式
- 适配器及适配器模式
- 适配器模式(类适配器)
- 适配器模式(默认适配器)
- 适配器模式(对象适配器)
- 适配器模式-类适配器
- 适配器模式-对象适配器
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- Vue组件-模板
- 数字三角形
- Easyui动态添加控件无法渲染 $.parser.parse()无效
- 思维搜索骚操作小记
- TMS320F28335学习笔记-启动过程
- 适配器模式
- HTML5权威指南笔记:21-创建布局
- linux 驱动学习之kmalloc 内存分配
- springboot-email 邮件发送实战
- 28-友元
- 线程之间共享数据
- HDU 2020 绝对值排序
- [ElasticSearch]数据类型keyword和text的区别
- python 数据分析 numpy基础