结构型设计模式之桥接模式实验--开发一个跨平台视频播放器
结构型设计模式之桥接模式实验–开发一个跨平台视频播放器。
- 需要知道桥接模式的相关知识:
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等。现使用桥接模式设计该播放器。
- 实现代码如下:
- 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操作系统版本)照猫画虎即可…(要自己动手敲出来哦☺)
- 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");
}
}
最终运行结果如下:
-
注意:
上边要自己敲出来的部分一定要敲出来,不然结果肯定运行错误,因为代码没有补充完整。套用即可~
我们的小白菜市场 心里眼里欢迎你~~❤
上一篇: Java泛型浅析
下一篇: HTTP认证之基本认证