首页 > 其他分享 >适配器模式

适配器模式

时间:2023-05-05 11:11:28浏览次数:39  
标签:play String 适配器 模式 fileName void audioType public

适配器模式

2个接口,普通播放器,高级播放器

普通播放器 MediaPlayer

public  interface MediaPlayer {
	void play(String audioType, String fileName);
}

高级播放器 AdvancedMediaPlayer

public interface AdvancedMediaPlayer {
	void playVlc(String fileName);
	void playMp4(String fileName)
}

vlc播放器实现

public class VlcPlayer implements AdvancedMediaPlayer {
	public void playVlc(String fileName){
		System.out.println("vlc play :" + fileName);
	}
	public void playMp4(String fileName){
	
	}
}

mp4播放器实现

public class Mp4Player implements AdvancedMediaPlayer {
	public void playVlc(String fileName){
	
	}
	public void playMp4(String fileName){
		System.out.println("mp4 play:" + fileName);
	}
}

创建适配器,实现MediaPlayer

public MediaAdapter implements MediaPlayer {

	AdvancedMediaPlayer advancedMediaPlayer;
	public MediaAdapter(String audioType){
		switch(audioType){
			case "vlc":
				advancedMediaPlayer =  new VlcPlayer();
				break;
			case "mp4":
				advancedMediaPlayer =  new Mp4Player();
				break;
		}
	}
	
	public void play(String audioType, String fileName){
		switch(audioType){
			case "vlc":
				advancedMediaPlayer.playVlc(fileName);
				break;
			case "mp4":
				advancedMediaPlayer.playMp4(fileName);
				break;
		}
	}
}

引用适配器,进行定义开发

public AudioPlayer implements MediaPlayer {
	MediaAdapter mediaAdapter;
	public void play(String audioType, String fileName){
		switch(audioType){
			case "mp3":
				System.out.println("mp3 play:" + fileName);
				break;
			case "vlc":
				mediaAdapter = new  MediaAdapter("vlc");
				mediaAdapter.play(audioType,fileName);
				break;
			case "mp4":
				mediaAdapter = new  MediaAdapter("mp4");
				mediaAdapter.play(audioType,fileName);
				break;
		}
	}
}

main函数测试

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");
   }
}

标签:play,String,适配器,模式,fileName,void,audioType,public
From: https://www.cnblogs.com/PythonOrg/p/17373553.html

相关文章

  • 编译器优化选项和debug,release模式的区别(转)
    原文:https://blog.csdn.net/qq_41854911/article/details/129657879有时候,程序在Debug模式下运行的好好的,一Release就crash了。有时候,程序在Debug模式下崩溃了,Release模式下居然能正常运行。以上这种情况,可能很多人都遇到过。用C/C++的朋友都知道编译器编译有各种优化级别,编译......
  • 工厂模式笔记
    参考教程主要参考了抽象工厂模式和工厂模式-简单工厂、工厂方法、抽象工厂解析代码部分要生产的产品packagefun.seolas.factory.simple;publicclassProduct{}/***形状产品*/interfaceShape{voiddraw();}classCircleimplementsShape{@Ov......
  • Java设计模式-建造者模式
    简介建造者模式是一种创建型设计模式,用于将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通过将复杂对象的构建过程分解为多个简单的步骤来实现。与其他创建型模式不同,建造者模式强调的是将构建过程与表示分离,而不是将对象与其构建方式分离......
  • RK 3568 normal模式/loader模式/MASKROM模式
    RK3288/RK3399启动后有三种模式:normal模式、loader模式、MASKROM模式 normal模式:正常的启动模式,这个模式无法刷固件。一般板子通电就是这个模式。loader模式:刷固件模式,这个模式可以刷各种image。按住recover按键再通电,通过bootloader/uboot的检测进......
  • 【SpringCloud】 Eureka 单机模式
    系统配置信息springboot版本:2.1.6.RELEASEjdk:1.8系统:Windows10工程结构父工程halo-cloud-parent子工程<注册中心>halo-cloud-server子工程<服务消费者>halo-cloud-consumer子工程<服务提供者>halo-cloud-providerhalo-coud-parent依赖引入<!--打......
  • 【访问者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介访问者模式(VisitorPattern)是一种行为型模式。它封装一个访问者类,把各元素类的操作集合起来,目的是将数据结构与数据操作分离。在不改变原有元素类数据结构的前提下,改变了元素类的执行算法。当某些较为稳定的东西(数据结构或算法),不想直接被改变但又想扩展功能,这时候适合用访问......
  • profile.ps1 : 无法使用点 '.' 获得此命令来源,因为该命令是在不同语言模式下定 义的。
    使用自定义的PowerShell配置文件(所有用户,所有主机的情况下):打开PowerShell提示:C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1:无法使用点'.'获得此命令来源,因为该命令是在不同语言模式下定义的。要调用此命令而不导入其内容,请忽略'.'运算符。所在位置行:1......
  • Vite | package.json之script配置多模式
    package.json是一个常用的配置文件,用于描述你的JavaScript项目。其中,scripts字段可以用来定义一组命令,用于开发、构建、测试和部署你的应用程序。下面是一些常用的命令和配置方式:开发dev:用于启动本地开发服务器。例如:"scripts":{"dev":"vite"}在上述配置中,dev命......
  • VMware中的三种网络模式
    VMware中提供了虚拟机的三种网络连接模式,桥接模式、NAT模式、仅主机模式,可以在虚拟机设置中的网络适配器中更改。桥接模式是将虚拟交换机VMnet0上的一个接口通过虚拟网桥连接到真实机的网卡上,其他接口连接其他的虚拟机。虚拟机如果使用的桥接模式那么虚拟机的ip和真实机的ip处于......
  • LVS_DR跟LVS_NAT模式的特点及优势
    LVS_DR模式特点1)所有集群节点RS必须和Director在相同的物理网段(即同一个局域网中);2)所有客户端入站(而不是出站)请求由Director首先接收,并转发给集群节点RS;3)集群节点RS通常来说最好带外部IP,而不使用Director及某固定机器作为默认网关,以便将数据包直接回复给客户端计算机,且不会产生......