设计模式-结构型模式 -bridge 桥接模式

桥接模式更注重:两个可变维度的拓展 不能用继承 容易造成类爆炸

四个角色:实现化 (定义接口方法 ) 具体实现化 implement实现化接口 并重写方法

抽象化 :聚合实现化接口 并初始化 重写方法 调用方法(接口对象 调用 指向实现类->多态)

拓展抽象化 :实现抽象化 重写方法 调用方法( 实现化接口对象   调用的还是初始 拓展抽象化对象实例的时候传递的 具体实现化 对象)

package com.qf.bridgedemo;

//实现化角色
public interface VideoFile {
    //定义实现化角色的接口,供扩展抽象化角色调用
    void decode(String fileName);
}



package com.qf.bridgedemo;

//avi文件
public class AVIFile implements VideoFile {
    @Override
    public void decode(String fileName) {
        System.out.println("avi 文件 " + fileName);
    }
}


package com.qf.bridgedemo;

//rmvb文件
public class RMVBFile implements VideoFile {
    @Override
    public void decode(String fileName) {
        System.out.println("rmvb文件" + fileName);
    }
}




package com.qf.bridgedemo;

//操作系统版本  抽象化角色
public abstract class OperatingSystemVersion {
    //聚合 对是实现化的引用
    protected VideoFile videoFile;

    public OperatingSystemVersion(VideoFile videoFile) {
        this.videoFile = videoFile;
    }

    //抽象化角色 中的方法
    public abstract void play(String fileName);

}




package com.qf.bridgedemo;

//window版本 拓展抽象化角色
public class Windows extends OperatingSystemVersion {
    //初始化的时候构件实现化类对象
    public Windows(VideoFile videoFile) {
        super(videoFile);
    }

    //重写 抽象化方法
    @Override
    public void play(String fileName) {
        videoFile.decode(fileName);
    }
}



package com.qf.bridgedemo;

//拓展抽象化角色
public class Mac extends OperatingSystemVersion {
    public Mac(VideoFile videoFile) {
        super(videoFile);
    }

    @Override
    public void play(String fileName) {
        videoFile.decode(fileName);
    }
}

总结:两个独立变化的维度 拓展的时候 推荐使用桥接模式

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值