桥接设计模式

java 复制代码
package com.jmj.pattern.bridge;

/**
 * 视频文件(实现化角色)
 */
public interface VideoFile {

    void decode(String fileName);
}
java 复制代码
package com.jmj.pattern.bridge;

public class RmvFile implements VideoFile{
    @Override
    public void decode(String fileName) {
        System.out.println("rmvb视频文件:"+fileName);
    }
}
java 复制代码
package com.jmj.pattern.bridge;

/**
 * avi视频文件(具体的实现化角色)
 */
public class AviFile implements VideoFile{
    @Override
    public void decode(String fileName) {
        System.out.println("avi 视频文件 : "+fileName);
    }
}
java 复制代码
package com.jmj.pattern.bridge;

public abstract class OpratingSystem {
    //声明videoFile变量
    protected  VideoFile videoFile;

    public OpratingSystem(VideoFile videoFile) {
        this.videoFile = videoFile;
    }
    public abstract void play(String fileName);


}
java 复制代码
package com.jmj.pattern.bridge;

/**
 * 扩展抽象化角色(windows操作系统)
 */
public class Windows extends OpratingSystem{


    public Windows(VideoFile videoFile) {
        super(videoFile);
    }

    @Override
    public void play(String fileName) {
      videoFile.decode(fileName);
    }
}
java 复制代码
package com.jmj.pattern.bridge;

public class Mac extends OpratingSystem{
    public Mac(VideoFile videoFile) {
        super(videoFile);
    }

    @Override
    public void play(String fileName) {
        videoFile.decode(fileName);
    }
}
java 复制代码
package com.jmj.pattern.bridge;

public class Client {
    public static void main(String[] args) {
        //创建mac系统对象
        OpratingSystem system=new Mac(new RmvFile());
        system.play("战狼3");

    }
}
相关推荐
南桥几晴秋15 小时前
Qt显示类控件
开发语言·c++·qt
这儿有一堆花15 小时前
Python 虚拟环境的配置与管理指南
开发语言·python
晨风先生15 小时前
打包Qt程序的脚本package.bat
开发语言·qt
周末吃鱼15 小时前
研发快速使用JMeter
java·jmeter
EntyIU15 小时前
自己实现mybatisplus的批量插入
java·后端
小途软件15 小时前
基于深度学习的人脸检测算法研究
java·人工智能·pytorch·python·深度学习·语言模型
朔北之忘 Clancy15 小时前
2025 年 6 月青少年软编等考 C 语言一级真题解析
c语言·开发语言·c++·学习·算法·青少年编程·题解
董世昌4115 小时前
js遍历数组和对象的常用方法有哪些?
开发语言·javascript·ecmascript
小CC吃豆子15 小时前
Java数据结构与算法
java·开发语言
晨旭缘15 小时前
后端日常启动及常用命令(Java)
java·开发语言