6.设计一个媒体播放器MediaPlayer。该媒体播放器支持音频文件MP3和WAV,视频文件RM和AVI的播放,将来可能扩展到更多种的音频和视频。请运用面向对象思想,给出一个最优的设计方案并给出相应代码。
// 定义媒体播放器 MediaPlayer
public class MediaPlayer {
private Media media;
public void play(Media media) {
this.media = media;
media.play();
}
}
// 定义媒体抽象类 Media
public abstract class Media {
public abstract void play();
}
// 音频类 Audio 继承自媒体抽象类 Media
public class Audio extends Media {
private String fileName;
public Audio(String fileName) {
this.fileName = fileName;
loadAudio(); // 加载音频文件的逻辑
}
@Override
public void play() {
System.out.println("播放音频:" + fileName);
// 播放音频的逻辑
}
private void loadAudio() {
// 加载音频文件的逻辑
}
}
// 视频类 Video 继承自媒体抽象类 Media
public class Video extends Media {
private String fileName;
public Video(String fileName) {
this.fileName = fileName;
loadVideo(); // 加载视频文件的逻辑
}
@Override
public void play() {
System.out.println("播放视频:" + fileName);
// 播放视频的逻辑
}
private void loadVideo() {
// 加载视频文件的逻辑
}
}
// 测试类
public class Main {
public static void main(String[] args) {
MediaPlayer player = new MediaPlayer();
// 创建并播放音频
Audio audio = new Audio("audio.mp3");
player.play(audio);
// 创建并播放视频
Video video = new Video("video.avi");
player.play(video);
}
}
以上代码使用了面向对象的思想和继承概念,通过定义媒体抽象类 Media
和具体的音频类 Audio
、视频类 Video
来实现媒体播放器 MediaPlayer
。媒体抽象类提供了 play()
方法,子类根据音频或视频的不同实现具体的播放逻辑。通过调用 MediaPlayer
的 play()
方法并传入相应的媒体对象,即可播放对应的音频或视频文件。