(资料图片)
下面是一个完整的适配器模式的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
将会创建一个适配器对象,通过适配器来实现播放。适配器模式的优点在于它可以将两个不兼容的接口进行连接,从而实现代码的复用和扩展性的提高。如果有新的音频格式需要支持,只需要实现一个新的适配器即可。
另外,适配器模式可以提高代码的可读性和可维护性。它可以将不相关的代码放在不同的类中,从而使代码更易于理解和维护。
下一篇:最后一页
在这个示例中,适配器模式将一个不支持的音频格式转换成了支持的格式,并通过适配器的方式来实现播放。具体
中新网乌鲁木齐4月30日电(潘琦)4月29日,新疆博乐市万亩海棠生态园繁花满树,花开正艳。博乐市第五届海棠
为切实做好“五一”节假日期间各项安保维稳工作,和县公安局功桥派出所民辅警联合江淮义警迅速开展相关...
利辛县卫生健康委员会原党组成员、副主任倪明涉嫌严重违纪违法,目前正在接受利辛县纪委监委纪律审查和监察
新华社马德里5月3日电(谢宇智)2022-2023赛季西班牙足球甲级联赛第33轮3日继续进行,马德里竞技主场5:1完
4月28日至30日,2023年全国大学生机器人大赛RoboMaseter机甲大师高校联盟赛(西南站)在重庆大学举办,吸引
需求收缩、供给冲击、预期转弱三重压力得到缓解,经济增长好于预期,市场需求逐步恢复,经济发展呈现回升向
本文为大家整理了台州仙居2023年支持商业外摆的范围,其中包括吾悦广场,西门街商业街区,庆丰南街街区。
1、钢丝绳电动葫芦有欧式钢丝绳电动葫芦和常规的国标钢丝绳电动葫芦。2、下面是常规CDMD钢丝绳电动葫芦下图
5月4日,《华尔街日报》援引知情人士的话报道,私募股权公司ApolloGlobalManagement即将达成收购工业零部件
1、孙莉。2、女。3、克拉玛依市克拉玛依区昆仑路街道南泉社区儿童主任。文章到此就分享结束,希望对大家有
•国务委员兼外长秦刚访问缅甸期间,要求缅方严厉打击网络诈骗犯罪。秦刚指出,缅甸边境地区长期盘踞电信网
“我们的春茶产量高、质量好,效益也好,一年收获怎么样,全看这段时间了。”3月底以来,武平县年年春茶...
乒联点名表扬孙颖莎,世乒赛再战3项,马琳不认可刘国梁派出3天才,马琳,国乒,乒联,刘国梁,孙颖莎,世乒赛,邱
“五一”小长假消费升温,各类家电成为消费热潮中的主角。小长假期间,宁波市商务局开展了“双促双旺& ...
1、开窗口模式。2、然后分辨率控制大小。本文到此分享完毕,希望对大家有所帮助。
1、你自己注册认证过店铺发布产品的时候你输入这个类目的时候要求什么条件都会提示的每年都会有不同的变化
海报新闻记者秦文济南报道今年“五一”假期市民游客出行需求旺盛,出行客流持续高位运行,济南公交共完...
1、孙继龙。2、八路军鲁南军区副司令员孙伯龙之子。文章到此就分享结束,希望对大家有所帮助。
如果不是报告期内投资收益提振,同方股份(600100 SH)2022年业绩或许更加难看。该公司近日发布的年报显示
执法人员深入辖区内餐饮店开展食品安全检查。执法人员对市内大型游乐设施进行检查。执法人员对特种设备进行
欧洲掀起生物甲烷扩产潮,近日,意大利天然气公司Italgas与传统烈酒酿造商Bonollo宣布将合作生产生物甲烷,
↑“3 8元一支钟薛高”探店视频一根钟薛高只要3 8元,雪糕“刺客”变“侠客”?日前,一则东北雪糕店...
极目新闻记者李辉五一小长假,点燃武汉“夜”经济。5月3日,美团发布五一消费数据,假期前三天“夜间游...
双边合作机遇叠加中巴农产品进出口活跃
X 关闭
X 关闭