Java 适配器模式:解决 Windows Media Player 与 RealPlayer 兼容难题并支持未来扩展
以下是一个使用适配器模式来处理媒体播放器兼容问题的 Java 示例代码: ```java interface MediaPlayer { void play(); void stop(); } class WindowsMediaPlayerAdapter implements MediaPlayer { private WindowsMediaPlayer windowsMediaPlayer; WindowsMediaPlayerAdapter(WindowsMediaPlayer windowsMediaPlayer) { this.windowsMediaPlayer = windowsMediaPlayer; } @Override public void play() { windowsMediaPlayer.bofang(); } @Override public void stop() { windowsMediaPlayer.tingzhi(); } } class WindowsMediaPlayer { public void bofang() { System.out.println("Windows Media Player is playing"); } public void tingzhi() { System.out.println("Windows Media Player is stopped"); } } class RealPlayerAdapter implements MediaPlayer { private RealPlayer realPlayer; RealPlayerAdapter(RealPlayer realPlayer) { this.realPlayer = realPlayer; } @Override public void play() { realPlayer.play(); } @Override public void stop() { realPlayer.stop(); } } class RealPlayer { public void play() { System.out.println("RealPlayer is playing"); } public void stop() { System.out.println("RealPlayer is stopped"); } } public class MediaPlayerAdapterExample { public static void main(String[] args) { WindowsMediaPlayer windowsMediaPlayer = new WindowsMediaPlayer(); MediaPlayer windowsAdapter = new WindowsMediaPlayerAdapter(windowsMediaPlayer); windowsAdapter.play(); windowsAdapter.stop(); RealPlayer realPlayer = new RealPlayer(); MediaPlayer realAdapter = new RealPlayerAdapter(realPlayer); realAdapter.play(); realAdapter.stop(); } } ``` 在上述代码中: - 定义了一个`MediaPlayer`接口,规定了通用的`play`和`stop`方法。 - 分别为`WindowsMediaPlayer`和`RealPlayer`创建了适配器类`WindowsMediaPlayerAdapter`和`RealPlayerAdapter`,将它们各自独特的方法适配到`MediaPlayer`接口的方法。 这样,在应用程序中可以通过`MediaPlayer`接口来操作不同的播放器,并且如果将来添加新的媒体播放器,只需创建新的适配器类来实现`MediaPlayer`接口即可。 ######[AI写代码神器 | 554点数解答 | 2024-11-14 17:15:33]
- “伤逝”技能解析:锁定触发,精准补牌有门道! (讯飞星火 | 331点数解答 | 2025-07-01 12:15:43)186
- 无名杀技能调优秘籍:让AI高频积极用技能的七大策略与注意要点(DeepSeek | 571点数解答 | 2025-05-24 12:45:13)317
- 优化射日与变装技能代码:解决头像显示问题及注意事项(阿里通义 | 710点数解答 | 2025-07-13 22:05:30)170
- JavaScript 代码深度剖析:错误分析、优化方案及注意要点(字节豆包 | 951点数解答 | 2025-11-11 22:46:53)112
- 深度剖析:神秘技能对象代码的属性、逻辑与注意要点(字节豆包 | 211点数解答 | 2025-02-01 13:23:26)301
- 卡牌技能揭秘:“渐营”技能逻辑、存储机制与触发限制全解析(讯飞星火 | 713点数解答 | 2025-07-05 23:27:14)187
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)413
- 代码改造:将给牌效果从一张改为一种花色所有牌的实现与注意点(DeepSeek | 405点数解答 | 2025-03-28 12:15:20)214
- 代码分析与优化:为技能函数添加错误处理、提高可读性及注意要点(字节豆包 | 199点数解答 | 2025-05-07 17:49:43)252
- 超详细!代码智能翻译,解锁技能系统逻辑奥秘(字节豆包 | 522点数解答 | 2025-05-24 13:13:19)260
- 代码问题全解析:语法纠错、优化策略与逻辑注意点(字节豆包 | 810点数解答 | 2025-06-26 13:35:10)207
- 无名杀技能代码解析:从“闭月”到回合结束变换武将图(字节豆包 | 339点数解答 | 2025-07-14 23:10:12)128