(资料图片仅供参考)
适配器模式是一种结构型设计模式,它用于将一个类的接口转换成另一个接口,以便于两个不兼容的接口能够一起工作。适配器模式有时也被称为包装器模式。
适配器模式包含以下角色:
目标接口(Target Interface):定义客户端所需的接口,这是客户端代码调用的接口。适配器(Adapter):适配器是一个类,它实现目标接口并且包含一个对被适配对象的引用。被适配对象(Adaptee):被适配对象是一个已经存在的对象,它的接口与目标接口不兼容。客户端(Client):客户端通过目标接口调用适配器的方法来与被适配对象进行交互。下面是一个适配器模式的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 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"); } } }这个例子中,客户端调用了 MediaPlayer接口的 play方法。如果传入的文件类型是 mp3,则直接在 AudioPlayer类中播放,否则就通过适配器模式实现播放其他格式的音频文件。当需要播放不支持的音频格式时,AudioPlayer类会创建一个 MediaAdapter对象,该对象可以将不支持的音频格式转换成支持的格式,然后调用 MediaPlayer接口的 play方法来播放该格式的音频文件。
使用适配器模式的好处是可以将两个不兼容的接口进行连接,从而实现代码的复用和扩展性的提高。如果有新的音频格式需要支持,只需要实现一个新的适配器即可。
标签:
适配器模式是一种结构型设计模式,它用于将一个类的接口转换成另一个接口,以便于两个不兼容的接口能够一起
1、丑女的后宫法则(还在更新中。2、这本个人觉得真的很好看)还有天降贤淑男(这本就觉得一般般。3、不过
1、女生对男生说各自安好就是对这个男生没有意思。2、以后也不会发展成恋人。3、只能是好朋友。本文到此分
1、宋飞、金辉经典教学珍藏乐谱:梁祝二胡、小提琴双协奏曲。本文到此分享完毕,希望对大家有所帮助。
1、常用的贸易条款有DAP(目的地交货),DAT(运输终端交货),DDP(完税交货),EXW(工厂交货),FCA(货交承
1、《斯卡布罗集市》是电影《毕业生》(1967年)的主题曲。2、一名女大学生在警卫队的枪口上,插上了一朵象
1、倍耐力()相信喜欢足球喜欢国际米兰的朋友对这个牌子都有印象。2、倍耐力是国际米兰的主赞助商,国际米
原标题:今日热榜丨返程高峰来了!道路千万条,平安最重要!5月3日,“五一”小长假最后一天,高速公路、车
2日,由星海音乐学院国乐系主办,广东省古筝学会、阳江市古筝学会承办的梁晶晶古筝独奏音乐会在市古筝学会
欢迎观看本篇文章,小升来为大家解答以上问题。心惊肉跳造句,怎么用心惊肉跳造句很多人还不知道,现在让我
凯美特气:关于2022年限制性股票激励计划预留授予登记完成的公告
上周五(4月28日)盘中,主力合约小幅下行,日内最低下探至4143元 吨,周K线收阴。截止收盘,乙二醇主力合约
5月2日,有网友爆料称,西安白鹿仓景区一架直升机坠落。西安一直升机坠落致3人遇难5月2日14时许,陕西龙翼
禾川科技5月3日公告,公司股东达晨晨鹰一号及一致行动人达晨晨鹰二号(合计持股5 82%)、越超有限公司(持
五四青年节来了,那场轰轰烈烈的爱国运动,已经过去104年了。没有人能永远青春,但永远有人正值青春。
牛毛山公园位于李沧区沧口老城区中心位置,文安路北侧,永年路西侧,占地面积13 96公顷,海拔65 7米,周边
五一游山东,是项多选题。这个假期,山东各大景区一眼望去都是人人从从众众叕!快来感受一下顶流山东的超高
假日期间少不了聚餐,顿顿美食,是否吃得比较油腻?今天就为大家推荐一道口感嫩滑,清爽解腻的————凉拌
撰文/花不缺来源/趣识财经4月23日晚,倍轻松交出了2022年的“成绩单”,其2022年实现营收8 96亿元,同比
第二架接返自苏丹撤离中国公民的临时航班,5月2日晚9点09分抵达北京首都国际机场,140多名同胞搭乘该航班顺
我国31个省区市已经全部公布各自省份一季度的经济运行数据。从数据来看,各地经济发展呈现回升向好态势,经
港股概念追踪|金价重返2000美元上方黄金避险地位进一步凸显(附概念股),金价,黄金,美股,概念股,美联储,银行
短裤在日常穿搭中非常常见,不仅时髦有型而且穿起来也很有舒适感,以至于这种穿搭在夏季就显得很普通了,在
据美国福克斯新闻网当地时间5月2日报道,美国众议院议长凯文·麦卡锡接受了总统拜登的邀请,定于5月9日与拜
网络分析服务网站StatCounter的数据显示,谷歌Chrome以66 13%的绝对优势成为最受欢迎的桌面浏览器,Safari
北京时间2023年4月26日下午,长安第三代CS75PLUS于线上宣布正式上市,官方指导售价区间12 49-14 99万元,共
1、无忧川奇,和以前的传 奇一样经典,只不过是全面的3D化了,角色更漂亮了,装备更多样了,技能也更加的炫
1、十二地支其中第四,属兔,多用于记录时间。2、也指器物接榫的地方凹入的部分,还有期限的意思象形。3、
中新社长春5月2日电 题:“洋校长”吉林任教11年:中国“Z世代”充满希望在约翰·理查德·汉弗莱斯的课堂上,
“饥饿游戏”系列前传电影《鸣鸟与蛇之歌》发布预告,本片由该系列电影导演弗朗西斯·劳伦斯回归执导,11
Copyright © 2015-2022 中公服装网版权所有 备案号:沪ICP备2022005074号-18 联系邮箱:5855973@qq.com