设计模式-适配器模式示例 每日动态
(相关资料图)
下面是一个完整的适配器模式的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
将会创建一个适配器对象,通过适配器来实现播放。适配器模式的优点在于它可以将两个不兼容的接口进行连接,从而实现代码的复用和扩展性的提高。如果有新的音频格式需要支持,只需要实现一个新的适配器即可。
另外,适配器模式可以提高代码的可读性和可维护性。它可以将不相关的代码放在不同的类中,从而使代码更易于理解和维护。
上一篇:每日看点!华里房地产(华里)
下一篇:最后一页
X 关闭
-
腾讯云
2023-05-04
设计模式-适配器模式示例 每日动态
-
互联网
2023-05-04
每日看点!华里房地产(华里)
-
证券之星
2023-05-04
今日播报!异动快报:南威软件(603636)5月4日11点5分触及跌停板
-
央视网
2023-05-04
打造“安全游”让游客“放心游” 各地积极提升景区服务保障水平
-
中国青年网
2023-05-04
环球快看:微视频|劳动者之光
-
光明日报
2023-05-04
拥抱数据的时代 共赢智慧的未来
-
中国新闻网
2023-05-04
宁夏银川:市民书香为伴 乐享假日
-
中国新闻网
2023-05-04
长沙很红车展很火,2023湖南车展火爆落幕,卖车总量、销售总额、观车人数均创历史新高
-
互联网
2023-05-04
天天快播:北冥雪怀孕话本(北冥雪)
-
实锤社
2023-05-04
雷竞技资讯:S13成Theshy最后一舞!经纪公司曝光夏季赛之后退役 焦点讯息