第五十八节 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");
   }
}

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

以上内容是否对您有帮助

相关推荐
JAVA面经实录9173 小时前
Java企业级工程化·终极完整版背诵手册(无遗漏、全覆盖、面试+落地通用)
java·开发语言·面试
周杰伦fans4 小时前
AutoCAD .NET 二次开发:深入理解 EntityJig 的工作原理与正确实现
开发语言·.net
许彰午5 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
Bat U6 小时前
JavaEE|多线程初阶(七)
java·开发语言
谭欣辰6 小时前
C++ 排列组合完整指南
开发语言·c++·算法
foundbug9997 小时前
自适应滤除直达波干扰的MATLAB实现
开发语言·算法·matlab
XDH_CS7 小时前
MySQL 8.0 安装与 MySQL Workbench 使用全流程(超详细教程)
开发语言·数据库·mysql
小短腿的代码世界8 小时前
Qt实时盈亏计算深度解析:从持仓数据到动态盈亏展示
开发语言·qt
小康小小涵8 小时前
基于ESP32S3实现无人机RID模块底层源码编译
linux·开发语言·python