设计模式-适配器模式示例
(资料图片)
下面是一个完整的适配器模式的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场比赛中送出了5次助攻。在接受天空体育采访
来源:2023.04.29
天玑9200+曝光:安兔兔+GeekBench双冠王 5月10日发布 或由iQOO Neo8 Pro首发-天天头条
4月28日下午,知名数码博主@数码闲聊站曝出了联发科最新旗舰芯片天玑9200+的Geekbenchv6跑分,其单核成绩为
来源:2023.04.28
新闻快讯
X 关闭
X 关闭
新闻快讯
- 设计模式-适配器模式示例
- 兴业证券:美国一季度GDP不及预期 库存是主要拖累 热闻
- 5月4日盘前重要宏观新闻_快看点
- 天天快讯:美国亚特兰大枪击案致1死4伤 参议员谈枪支暴力:谁都不安全
- “老爹鞋”是怎么火起来的?外媒解读
- 全球新资讯:降价我就服苹果!iPhone 14 Pro Max直降2400元还送快充头
- 当前快看:连续3天刷新记录 “五一”假期武汉地铁客运量达2648万乘次
- 商标变更申请_商标变更-环球热点
- 巨大反转!辽宁20分大胜,创造CBA季后赛神迹,场边郭艾伦笑开花
- 怎么开启华为手机的小艺功能 华为手机怎样开启小艺功能 全球快报
- 2023年“五一”假期国内旅游出游合计2.74亿人次 同比增长70.83%
- 友邦保险5月3日回购156.78万股 耗资1.32亿港币
- 7月2日到7月底 霉运消散,财神独宠,大财临门人生得意的星座
- 盐酸米诺环素胶囊副作用月经不调_盐酸米诺环素胶囊副作用
- 每日速递:9号半之花
- 晶合集成:公司股票将于5月5日在科创板IPO上市|全球微动态
- 全球消息!医务工作者节日期间坚守岗位:你的健康,我来守护
- 马鞍山人才补贴 马鞍山人才_环球今头条
- 《松江人文大辞典》精选|南乐路 焦点快播
- 罚球17比3!湖人反超勇士1分,浓眉23+11,普尔站出来追分
- 即时看!这是一场视觉盛宴!音乐剧《剧院魅影》中文版开启首场预演
- 多地大堵车 这里“堵骆驼”
- 河北深州:脱毒红薯苗 种出新希望|全球速讯
- 环球实时:扎拉布星人第三代
- 山东长岛旅游景点大全_盘点山东长岛旅游景点|全球微资讯
- 放弃城市工作回村开荒 90后女孩让乡村也有了文艺范儿 天天头条
- 感恩教育手抄报图片_感恩教育手抄报 世界时快讯
- 当前信息:qs生产许可证办理(qs生产许可证办理流程)
- 美国向全球宣布,核弹可5分钟打到长三角,中方:我们能反制
- 观察:台湾乘务员苏家榆:在大陆逐梦蓝天
- 哥伦比亚总统对西班牙进行国事访问
- ChatGPT导致信息泄露后:三星将开发内部AI工具|时讯
- 怎样检测日光灯管的好坏(怎样检测日光灯管的好坏视频教程)
- 天天快资讯:五一我在岗|喜欢做菜的长沙妹子给家人做佳肴练手
- 天天视点!龙海区长现场办公,推动房地产行业平稳健康发展
- dnf白字是啥意思 全球视点
- “国风”也浪漫 各地“五一”活动表演轮番登场
- 蒙蒂:我们全场仅5罚球 我想知道原因 我们双方都有身体接触|全球速读
- 创业:在未来,什么样的人,能把生意做大? 焦点速递
- 天天通讯!法国球员德转身价榜:姆巴佩1.8亿欧居首,本泽马3500万欧
- 造车新势力4月份交付量出炉!_观速讯
- 全球讯息:江西分宜:戏曲展演丰富市民假期生活
- 焦点快看:就 那条 发视频的 炒冷饭 BV1bc411H7Yd
- 美股收跌 一中概股暴挫 乌克兰把印度人得罪狠了
- 二十四味凉茶_关于二十四味凉茶的介绍 天天快讯
- 国债逆回购手续费怎么算,按天数和手续费费率计算 全球视点
- 孙正龙
- 《龙城》大结局:不站“东西”,郑西决心病好了,江薏这是何必呢
- 幻光戟和焰光戟哪个好(幻光币)
- 美国财政部:对第一共和银行问题得到解决感到鼓舞