桥接设计模式

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");

    }
}
相关推荐
快乐就好ya31 分钟前
Java多线程
java·开发语言
IT学长编程36 分钟前
计算机毕业设计 二手图书交易系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·二手图书交易系统
CS_GaoMing1 小时前
Centos7 JDK 多版本管理与 Maven 构建问题和注意!
java·开发语言·maven·centos7·java多版本
艾伦~耶格尔1 小时前
Spring Boot 三层架构开发模式入门
java·spring boot·后端·架构·三层架构
man20172 小时前
基于spring boot的篮球论坛系统
java·spring boot·后端
2401_858120532 小时前
Spring Boot框架下的大学生就业招聘平台
java·开发语言
S hh2 小时前
【Linux】进程地址空间
java·linux·运维·服务器·学习
转调2 小时前
每日一练:地下城游戏
开发语言·c++·算法·leetcode
Java探秘者2 小时前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
攸攸太上2 小时前
Spring Gateway学习
java·后端·学习·spring·微服务·gateway