关于Java设计模式的适配器模式

电脑杂谈  发布时间:2020-05-31 03:12:28  来源:网络整理

mp4播放器java版_java怎么播放mp3_java 视频播放服务器

这种问题经常发生在生活中. 例如,中国的标准电压为220v,美国为110v. 如果要在美国使用中国电器mp4播放器java版,则需要有一个电压适配器作为电压转换的中间桥.

适配器模式就是这样的功能. 它是两个不兼容接口之间的桥梁,属于一种结合了两个接口功能的结构模式.

现在有一个具有两个子类的媒体播放器,一个播放器可以播放mp4格式的文件,另一个可以播放vlc格式的文件:

mp4播放器java版_java怎么播放mp3_java 视频播放服务器

/**
 * 播放器接口
 * @author 樱桃肉丸子
 */
public interface AdvancedMediaPlayer {
    void playVlc(String fileName);
    void playMp4(String fileName);
}

/**
 * MP4播放器
 * @author 樱桃肉丸子
 */
public class Mp4Player implements AdvancedMediaPlayer {
    @Override
    public void playVlc(String fileName) {
        //do nothing
    }
    @Override
    public void playMp4(String fileName) {
        System.out.println("mp4播放");
    }
}

/**
 * VLC播放器
 * @author 樱桃肉丸子
 */
public class VlcPlayer implements AdvancedMediaPlayer {
    @Override
    public void playVlc(String fileName) {
        System.out.println("VLC播放");
    }
    @Override
    public void playMp4(String fileName) {
        //do nothing
    }
}

java 视频播放服务器_mp4播放器java版_java怎么播放mp3

这时,我们现在可以播放mp4和vlc格式的文件,但是目前有一个更高的要求,即我们希望有一个可以同时播放mp4和vlc格式的文件的播放器mp4播放器java版,并且创建一个界面来表示更高级的播放器:

/**
 * 更高级的播放器接口
 * @author 樱桃肉丸子
 */
public interface MediaPlayer {
    void play(String audioType, String fileName);
}

这时,我们需要创建一个适配器. 该适配器可以根据我们的需求自动转换为响应播放器.

java怎么播放mp3_java 视频播放服务器_mp4播放器java版

/**
 * 适配器实现类
 * @author 樱桃肉丸子
 */
public class MediaAdapter implements MediaPlayer{
    AdvancedMediaPlayer advancedMediaPlayer;
    public MediaAdapter(String audioType){
        if(audioType.equalsIgnoreCase("vlc") ){
            advancedMediaPlayer = new VlcPlayer();
        } else if (audioType.equalsIgnoreCase("mp4")){
            advancedMediaPlayer = new Mp4Player();
        }
    }
    @Override
    public void play(String audioType, String fileName) {
        if(audioType.equalsIgnoreCase("vlc")){
            advancedMediaPlayer.playVlc(fileName);
        }else if(audioType.equalsIgnoreCase("mp4")){
            advancedMediaPlayer.playMp4(fileName);
        }
    }
}

这时,创建高级播放器的子类以实现播放功能. 该类可通过适配器实现灵活播放的效果.

/**
 * 自动播放器
 * @author 樱桃肉丸子
 */
public class AudioPlayer implements MediaPlayer {
    MediaAdapter mediaAdapter;
    @Override
    public void play(String audioType, String fileName) {
        //内置mp3播放器
        if("mp3".equalsIgnoreCase(audioType)){
            System.out.println("播放mp3文件");
        //mp4或vlc格式文件
        }else if("mp4".equalsIgnoreCase(audioType) || "vlc".equalsIgnoreCase(audioType)){
            mediaAdapter = new MediaAdapter(audioType);
            mediaAdapter.play(audioType, fileName);
        }else{
            System.out.println("系统暂不支持该类型文件的播放!!!");
        }
    }
}

java 视频播放服务器_mp4播放器java版_java怎么播放mp3

最后看看效果:

/**
 * 测试类
 * @author 樱桃肉丸子
 */
public class AdapterPatternDemo {
    public static void main(String[] args) {
        //播放mp4文件
        MediaPlayer mediaPlayer = new AudioPlayer();
        mediaPlayer.play("mp4","a.mp3");
        //播放vlc文件
        mediaPlayer.play("vlc","b.vlc");
    }
}

摘要:

在此示例中,mp4和vlc的两个接口不兼容,但是通过适配器中的灵活调用,新播放器同时具有两个功能. 从功能级别上,您可以直接在AutoPlayer中编写适配器的代码,但我认为最好单独封装此兼容代码.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-228352-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...