运用Java面向对象的知识,遵守“开-闭原则”,设计这样一个通用的视频播放器的结构,使得以后能方便扩充新的视频文件和新的操作系统平台。
时间: 2024-02-15 12:05:44 浏览: 37
为了遵守开-闭原则,我们可以采用工厂模式设计视频播放器的结构。具体地,我们可以定义一个抽象的视频播放器接口(Player),包含播放(play)、暂停(pause)、停止(stop)等基本操作方法。然后定义不同类型的视频播放器类,如MP4Player、AVIPlayer等,分别实现这些基本操作方法。
接着,我们可以定义一个抽象的工厂类(PlayerFactory),包含创建视频播放器的方法(createPlayer),并且定义不同类型的工厂类,如MP4PlayerFactory、AVIPlayerFactory等。这些工厂类分别实现创建不同类型的视频播放器对象的方法。
最后,我们可以定义一个客户端类(Client),用于调用工厂类的方法来创建不同类型的视频播放器对象,并进行相应的操作。客户端类可以根据需要选择不同的工厂类来创建适合的视频播放器对象。
下面是示例代码:
```java
// 抽象视频播放器接口
public interface Player {
void play();
void pause();
void stop();
}
// MP4视频播放器
public class MP4Player implements Player {
@Override
public void play() {
System.out.println("MP4Player play");
}
@Override
public void pause() {
System.out.println("MP4Player pause");
}
@Override
public void stop() {
System.out.println("MP4Player stop");
}
}
// AVI视频播放器
public class AVIPlayer implements Player {
@Override
public void play() {
System.out.println("AVIPlayer play");
}
@Override
public void pause() {
System.out.println("AVIPlayer pause");
}
@Override
public void stop() {
System.out.println("AVIPlayer stop");
}
}
// 抽象工厂类
public abstract class PlayerFactory {
public abstract Player createPlayer();
}
// MP4视频播放器工厂类
public class MP4PlayerFactory extends PlayerFactory {
@Override
public Player createPlayer() {
return new MP4Player();
}
}
// AVI视频播放器工厂类
public class AVIPlayerFactory extends PlayerFactory {
@Override
public Player createPlayer() {
return new AVIPlayer();
}
}
// 客户端类
public class Client {
public static void main(String[] args) {
PlayerFactory factory = new MP4PlayerFactory();
Player player = factory.createPlayer();
player.play();
player.pause();
player.stop();
}
}
```
通过上述设计,我们可以方便地扩展新的视频文件及新的操作系统平台,只需要增加相应的视频播放器类和工厂类即可。同时,原有的代码不需要修改,符合开-闭原则。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)