设计代码,设计一个媒体播放器MediaPlayer

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() 方法,子类根据音频或视频的不同实现具体的播放逻辑。通过调用 MediaPlayerplay() 方法并传入相应的媒体对象,即可播放对应的音频或视频文件。