欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

结构型设计模式之桥接模式实验--开发一个跨平台视频播放器

程序员文章站 2024-02-09 16:02:46
...

结构型设计模式之桥接模式实验–开发一个跨平台视频播放器。

- 需要知道桥接模式的相关知识:

1.桥接模式是一种对象结构型模式,将抽象化部分与它的实现化部分分离,使它们都可以独立地变化。桥接模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,减少了代码编写量。
2、抽象化:抽象化就是忽略一些信息,把不同的实体当作同样的实体对待。在面向对象中,将对象的共同性质抽取出来形成类的过程即为抽象化的过程。
实现化:针对抽象化给出的具体实现,就是实现化,实现化产生的对象比抽象化更具体,是对抽象化事物的进一步具体化的产物。
3、脱耦:桥接模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用关联关系(组合或者聚合关系)而不是继承关系,从而使两者可以相对独立地变化。

- 4、桥接模式包含如下角色(不包括测试类):
(1)Abstraction:抽象类;
(2)RefinedAbstraction:扩充抽象类;
(3)Implementor:实现类接口;
(4)ConcreteImplementor:具体实现类。
(5)Client:客户端,外部使用程序;
uml类图实验报告里要画上且如何画:在第一个实验—工厂模型里已经有如何绘制流程了,可以去再看看,只需要WPS就可无需下载其他软件!UML如何用WPS完成
- 实验内容/实验目的:
开发一个跨平台视频播放器,可以在不同操作系统平台(如:Windows、Linux、UNIX等)上播放多种格式的视频文件,常见的视频格式包括MPEG、RMVB、AVI、WMV等。现使用桥接模式设计该播放器。

- 实现代码如下:

  1. VideoFile 定义视频文件,是一个接口类:
package Practice02;

public interface VideoFile {
	public void decode(String osType, String fileName);
}

2.AVIFile类,视频格式类;

package Practice02;

public class AVIFile implements VideoFile {//实现VideoFile接口   
	  public void decode(String osType, String fileName) {
		 System.out.println("操作系统为:"+osType+",其视频文件格式是:"+fileName);
	}
}

3.MPEGFile类,视频格式类;

public class MPEGFile implements VideoFile {//实现VideoFile接口   
		public void decode(String osType, String fileName) {
			System.out.println("操作系统为:"+osType+",其视频文件格式是:"+fileName);
	}
}

同理:RMVBFile 类(视频格式类)以及WMVFile 类(视频格式类)大家应该知道怎么编写了,照猫画虎即可…(要自己动手敲出来哦☺)

4.OperatingSystemVersion抽象类,定义抽象方法,操作系统版本类:

public abstract class OperatingSystemVersion {
		protected VideoFile vf;

		public void setVideoFile(VideoFile vf) {
			this.vf = vf;     //this属性声明变量
	}
		public abstract void play(String fileName);
}

5.LinuxVersion 定义操作系统类并实现继承

public class LinuxVersion extends OperatingSystemVersion {
	public void play(String fileName) {
		String osType = "Linux播放";
		this.vf.decode(osType,fileName);
	}
}

6.UnixVersion 定义操作系统类并实现继承

public class UnixVersion extends OperatingSystemVersion {
	public void play(String fileName) {
		String osType = "UNIX播放";
		this.vf.decode(osType,fileName);
	}
}

7.同理:WindowsVersion (Windows操作系统版本)照猫画虎即可…(要自己动手敲出来哦☺)

  1. Client 测试类:
package Practice02;

public class Client {
	public static void main(String args[]) {
		VideoFile vf;  //声明变量
		OperatingSystemVersion osType1 = new WindowsVersion();
		vf = new MPEGFile();  //创建对象并赋值
		//调用方法
		osType1.setVideoFile(vf);  
		osType1.play("MPEG");

		OperatingSystemVersion osType2 = new LinuxVersion();
		vf = new RMVBFile(); //创建对象并赋值
		osType2.setVideoFile(vf); //调用方法
		osType2.play("RMVB");
		
		OperatingSystemVersion osType3 = new UnixVersion();
		vf = new AVIFile(); //创建对象并赋值
		osType3.setVideoFile(vf); //调用方法
		osType3.play("AVI");
		
		OperatingSystemVersion osType4 = new UnixVersion();
		vf = new WMVFile();//创建对象并赋值
		osType4.setVideoFile(vf);//调用方法
		osType4.play("WMV");
	}
}

最终运行结果如下:

结构型设计模式之桥接模式实验--开发一个跨平台视频播放器

  • 注意:
    上边要自己敲出来的部分一定要敲出来,不然结果肯定运行错误,因为代码没有补充完整。套用即可~

我们的小白菜市场 心里眼里欢迎你~~❤