第五十八节 Java设计模式 - 适配器模式

Java设计模式 - 适配器模式

我们在现实生活中使用适配器很多。例如,我们使用存储卡适配器连接存储卡和计算机,因为计算机仅支持一种类型的存储卡,并且我们的卡与计算机不兼容。

适配器是两个不兼容实体之间的转换器。适配器模式是一种结构模式。

在Java设计模式中,适配器模式作为两个不兼容接口之间的桥梁。

通过使用适配器模式,我们可以统一两个不兼容的接口。

例子

首先我们创建一个播放器界面来播放任何时间的媒体文件。

MyPlayer是适配器,它统一了播放媒体文件的接口。

复制代码
interface Player {
   public void play(String type, String fileName);
}
interface AudioPlayer {  
   public void playAudio(String fileName);
}
interface VideoPlayer {  
   public void playVideo(String fileName);
}
class MyAudioPlayer implements AudioPlayer {
   @Override
   public void playAudio(String fileName) {
      System.out.println("Playing. Name: "+ fileName);    
   }
}
class MyVideoPlayer implements VideoPlayer {
   @Override
   public void playVideo(String fileName) {
      System.out.println("Playing. Name: "+ fileName);    
   }
}

class MyPlayer implements Player {

   AudioPlayer audioPlayer = new MyAudioPlayer();
   VideoPlayer videoPlayer = new MyVideoPlayer();
   
   public MyPlayer(){      
   }
   @Override
   public void play(String audioType, String fileName) {
      if(audioType.equalsIgnoreCase("avi")){
         videoPlayer.playVideo(fileName);
      }else if(audioType.equalsIgnoreCase("mp3")){
         audioPlayer.playAudio(fileName);
      }
   }
}
public class Main{
   public static void main(String[] args) {
      MyPlayer myPlayer = new MyPlayer();

      myPlayer.play("mp3", "h.mp3");
      myPlayer.play("avi", "me.avi");
   }
}

上面的代码生成以下结果。

以上内容是否对您有帮助

相关推荐
一条闲鱼_mytube8 小时前
智能体设计模式 - 核心精华
人工智能·设计模式
撩得Android一次心动8 小时前
Android Lifecycle 全面解析:掌握生命周期管理的艺术(1)
android·java·kotlin·lifecycle
lang201509288 小时前
Java高性能缓存库Caffeine全解析
java·缓存·linq
Engineer邓祥浩8 小时前
设计模式学习(11) 23-9 组合模式
学习·设计模式·组合模式
专注于大数据技术栈8 小时前
java学习--什么是线程安全和不安全
java·学习·安全
AAA阿giao8 小时前
qoder-cli:下一代命令行 AI 编程代理——全面解析与深度实践指南
开发语言·前端·人工智能·ai编程·mcp·context7·qoder-cli
进击的小菜鸡dd8 小时前
互联网大厂Java面试:从Spring Boot到微服务架构的场景化技术问答
java·spring boot·redis·ci/cd·微服务·消息队列·mybatis
Engineer邓祥浩8 小时前
设计模式学习(13) 23-11 享元模式
学习·设计模式·享元模式
IT19958 小时前
IDEA+JDK11编译SpringCore5源码及替换项目中的Springcore
java·ide·intellij-idea
techzhi8 小时前
IntelliJ IDEA 启动卡顿问题排查与解决
java·ide·intellij-idea