Java结构型设计模式简介及实例:适配器模式在Java设计模式中的应用
需积分: 0 140 浏览量
更新于2024-01-29
收藏 49KB DOCX 举报
lic void playAudio(String fileName) { System.out.println("Playing audio file: " + fileName); }}class MyVideoPlayer implements VideoPlayer { @Override public void playVideo(String fileName) { System.out.println("Playing video file: " + fileName); }}class MyPlayer implements Player { private AudioPlayer audioPlayer; private VideoPlayer videoPlayer; public MyPlayer() { this.audioPlayer = new MyAudioPlayer(); this.videoPlayer = new MyVideoPlayer(); } @Override public void play(String type, String fileName) { if (type.equalsIgnoreCase("audio")) { audioPlayer.playAudio(fileName); } else if (type.equalsIgnoreCase("video")) { videoPlayer.playVideo(fileName); } else { System.out.println("Invalid media type!"); } }}public class Main { public static void main(String[] args) { Player player = new MyPlayer(); player.play("audio", "music.mp3"); player.play("video", "movie.mp4"); player.play("image", "image.png"); }}通过使用适配器模式,我们可以将不兼容的接口统一到一个适配器类中。在上述代码中,我们创建了一个播放器界面 Player,该界面定义了一个 play() 方法来播放媒体文件,但它并没有提供具体的实现。然后我们创建了两个不兼容的媒体播放器接口 AudioPlayer 和 VideoPlayer,它们分别实现了播放音频和视频文件的方法。接着我们通过创建 MyPlayer 类作为适配器,它实现了 Player 接口,并在内部持有一个 AudioPlayer 和一个 VideoPlayer 的实例。在 MyPlayer 的 play() 方法中,根据传入的媒体文件类型,在适当的情况下调用相应的播放方法。最后,在主函数中我们创建了 MyPlayer 的实例并调用了 play() 方法几次,输出了相应的播放内容。通过这种方式,我们实现了统一的播放接口,无论是播放音频还是视频文件都使用同一个方法进行播放。适配器模式可以很好地解决两个不兼容接口之间的问题,但有时也会带来一些不便之处。例如,适配器会增加代码的复杂性,因为它需要额外的逻辑来处理两个不同的接口。此外,适配器可能会降低性能,因为它需要在两个不同的接口之间进行转换。因此,在使用适配器模式时,我们应该权衡利弊,并根据具体情况做出判断。总结来说,适配器模式是一种结构型设计模式,用于将两个不兼容的接口统一到一个适配器类中。通过适配器模式,我们可以实现两个不兼容接口之间的桥梁,使它们可以一起工作。这种模式在现实生活中很常见,例如使用存储卡适配器连接计算机和存储卡。然而,适配器模式也会带来一些不便之处,例如增加代码复杂性和降低性能。因此,在使用适配器模式时,我们需要对其利弊进行权衡,并在具体情况下做出判断。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2019-07-04 上传
2024-11-17 上传
2022-06-09 上传
2018-10-04 上传
2015-03-28 上传
2021-04-29 上传
Andy&lin
- 粉丝: 166
- 资源: 216
最新资源
- jsts-engine:内插JavaScript模板字符串
- 公司网站模版
- Blogpost-Backend-Project:具有2个或3个数据库模型(表)的Express API。 您的表之间必须有关系。 您至少应在1个模型上拥有完整的CRUD。 您的服务器应具有执行逻辑并返回JSON数据的RESTful路由。 如果时间允许,可以使用Express视图或React的前端UI。 例子
- Python_Utilities_Zoo:一些Python实用程序脚本
- ldd:编程接口到ldd
- 抓取:Api Rest para抓取自动零售
- ANNOgesic-1.0.10-py3-none-any.whl.zip
- microservices-on-rkt:实施 https
- project_test2:用于测试
- TomPlayer-开源
- mtdtag:代谢物数据汇总器
- 新桥深基坑支护方案(正式)封面及目录.zip
- helloworld-maven
- axe-con-react-tester
- 超级卡萨
- kgraphics.py