今日要闻!设计模式-适配器模式示例
2023-05-04 13:15:59来源:腾讯云
(资料图片仅供参考)
下面是一个完整的适配器模式的Java代码示例:
// 目标接口public interface MediaPlayer { public void play(String audioType, String fileName);}// 被适配对象public class Mp4Player { public void playMp4(String fileName) { System.out.println("Playing mp4 file. Name: "+ fileName); }}// 被适配对象public class VlcPlayer { public void playVlc(String fileName) { System.out.println("Playing vlc file. Name: "+ fileName); }}// 适配器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); } }}// 客户端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"); }}
输出结果如下:
Playing mp3 file. Name: beyond the horizon.mp3Playing mp4 file. Name: alone.mp4Playing vlc file. Name: far far away.vlcInvalid media. avi format not supported
在这个示例中,适配器模式将一个不支持的音频格式转换成了支持的格式,并通过适配器的方式来实现播放。具体而言,AudioPlayer
类作为客户端调用 MediaPlayer
接口的 play
方法。如果需要播放的音频格式是不支持的,AudioPlayer
将会创建一个适配器对象,并通过该适配器对象来播放音频。
在适配器模式的示例中,有以下几个角色:
目标接口:MediaPlayer
接口定义了 play
方法,用于播放音频文件。被适配对象:VlcPlayer
和 Mp4Player
类表示两种不兼容的音频格式,不能直接播放。适配器:MediaAdapter
类实现了 MediaPlayer
接口,同时包含一个被适配对象的引用。MediaAdapter
类将不支持的音频格式转换成支持的格式,并通过被适配对象来实现播放。客户端:AudioPlayer
类作为客户端,使用 MediaPlayer
接口来播放音频文件。如果需要播放的音频格式不支持,AudioPlayer
将会创建一个适配器对象,通过适配器来实现播放。适配器模式的优点在于它可以将两个不兼容的接口进行连接,从而实现代码的复用和扩展性的提高。如果有新的音频格式需要支持,只需要实现一个新的适配器即可。
另外,适配器模式可以提高代码的可读性和可维护性。它可以将不相关的代码放在不同的类中,从而使代码更易于理解和维护。
本网推荐
- 今日要闻!设计模式-适配器模式示例
- 环球快看:探访新疆兵团“城市美容师”:“一人脏”换万人净
- 5月4日山东地区氢氟酸市场价格下滑_世界新视野
- 扎实开展主题教育 河西区水晶小学开展传统文化教育月系列活动 环球信息
- 北京门头沟华侨城文旅小镇是否烂尾?相关部门回复:不存在烂尾问题 世界热点评
- 全国海洋生产总值超9万亿元 环球微动态
- 今日热闻!甘肃药品耗材集采3年半节省120亿元
- 盘点硬汉C罗的几次受伤(针对C罗大伤做出一个盘点) 微速讯
- 全球快资讯丨日珥和太阳风的区别_日珥是什么
- 4月中国仓储指数回升至53.7% 较上月上升3.5个百分点
- 孙莲
- 学拼音最简单的方法_怎样学拼音最简单
- 全球焦点!上海成十大热门旅游目的地 迪士尼部分项目排队时间超过3小时
- University Hill标售6伙 套现5300万_每日播报
- 美股异动 | 艾默生电气涨超4% Q2财季业绩超预期 世界今热点
- 环球热点!KOPPT_koppt
- 环球今日讯!快速下载游戏_快速下载
- 矿化纯橄榄岩_今日热门
- 【环球报资讯】孙维刚初中数学 第二版
- 携“新厨电”登陆AWE2023,凯度发布全厨烹净饮解决方案
- 环球看热讯:关于不法企业假冒国家能源集团所属子公司有关情况的公告
- 天天热推荐:山西两厅官落马,均曾任煤企高管
- 世界观天下!西双版纳一网约车加价未果后拒载,官方通报:罚3万元!
- 天天快资讯:甘孜藏族自治州气象台发布雷电黄色预警信号【III级/较重】【2023-05-03】
- 美半导体协会总裁:中国是我们最大的市场,我们不能缺席_全球观焦点
- 超大三联屏/多项舒适配置 新款星途揽月实拍图解 全球视讯
- 焦点快看:蒸面条怎么蒸出来松散不粘_蒸面条怎么蒸出来松散
- 延大附院巾帼卫生保健志愿者服务队
- 想不想修真血浮屠在哪-想不想修真血浮屠
- 温度计怎么用酒精消毒_温度计怎么用