设计模式|桥接模式

  • 桥接模式:用于系统的初步设计,对于存在两个独立变化维度的类可以将其分为抽象化和实现化两个角色,使它们可以分别进行扩展变化
  • (适配器模式:当发现系统与已有类无法协同工作时)

类图:

代码示例:

1.Video接口

public interface Video {
    /**
     * 打开视频文件
     * @return 视频文件
     */
    Video openVideo();

    /**
     * 播放视频
     */
    void playVideo();
}

2.Video实现-FlvVideo

public class FlvVideo implements Video {
    @Override
    public Video openVideo() {
        System.out.println("打开Flv格式视频");
        return new FlvVideo();
    }

    @Override
    public void playVideo() {
        System.out.println("当前视频格式是Flv");
    }
}

3.Video实现-Mp4Video

public class Mp4Video implements Video {
    @Override
    public Video openVideo() {
        System.out.println("打开Mp4格式视频");
        return new Mp4Video();
    }

    @Override
    public void playVideo() {
        System.out.println("当前视频格式是Mp4");
    }
}

4.操作系统抽象类-Os,桥接模式的核心

public abstract class Os {
    protected Video video;

    public Os(Video video) {
        this.video = video;
    }

    /**
     * 该方法与Video接口中的方法名相同,但非强制
     *
     * @return video
     */
    abstract Video getVideo();
}

5.操作系统子类-AndroidOs

public class AndroidOs extends Os {

    public AndroidOs(Video video) {
        super(video);
    }

    @Override
    Video getVideo() {
        return video;
    }
}

6.操作系统子类-LinuxOs

public class LinuxOs extends Os {

    public LinuxOs(Video video) {
        super(video);
    }

    @Override
    Video getVideo() {
        return video;
    }
}

6.测试代码

    public static void main(String[] args) {
        // 在安卓系统上播放flv
        LinuxOs linuxOs = new LinuxOs(new FlvVideo());
        Video flv = linuxOs.getVideo();
        flv.playVideo();

        // 在linux系统上播放MP4
        AndroidOs androidOs = new AndroidOs(new Mp4Video());
        Video mp4 = androidOs.getVideo();
        mp4.playVideo();
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值