设计模式——桥接模式(Bridge模式)

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了设计模式——桥接模式(Bridge模式)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

基本介绍

  1. 桥接模式(bridge模式):将实现与抽象放在两个不同的类层次中,使两层次可以独立改变
  2. 是一种结构型设计模式
  3. 说白了就是有多个维度的变化,这样的组合关系如果按照传统的方式会导致类爆炸,所以需要将两个维度抽象出来,然后让其通过对象进行组合,来减少类的创建

用手机来举例

当前有两个维度:1. 品牌; 2. 样式
品牌:小米 华为 Vivo等
手机样式:直板机、滑盖机、翻盖机等

先定义品牌维度接口

public interface Brand {
    // 品牌口号
    String brandVoice();
}
定义一个品牌小米
public class Xiaomi implements Brand {
    @override
		public String brandVoice() {
        return "为发烧而生...";
    }
}

在定义样式接口

public interface PhoneStyle {
  // 手机样式
	String style();
}
定义话类
public abstract class Phone {
    //组合品牌
    PRivate Brand mbrand;

    //构造器
    public Phone(Brand mBrand) {
        this.mBrand = mBrand;
    }

    protected void oPEn(){
        this.mBrand.brandVoice();
        System.out.println("phone open");
    }

    protected void close(){
        this.mBrand.brandVoice();
        System.out.println("phone close");
    }

    protected  void call(){
        this.mBrand.brandVoice();
        System.out.println("phone call");
    }

}

定义具体的Phone类

//折叠式手机类,继承抽象类Phone
public class FoldedPhone extends Phone implements PhoneStyle {
    //构造器
    public FoldedPhone(Brand mBrand) {
        super(mBrand);
    }

    public void open(){
        super.open();
	      style();
    }

    public void close(){
        super.close();
	      style();
    }

    public void call(){
        super.call();
	      style();
    }
  
    @Override
    public String style() {
      return "折叠式手机";
    }
}
使用
public class Client {
    public static void main(String[] args){
        //获取折叠式手机(样式+品牌)
        Phone phone1 = new FoldedPhone(new Xiaomi());
        phone1.open();
        phone1.call();
        phone1.close();
    }
}
这就使桥接模式,从类图上可以看出,一个抽象类带一个接口飞的样子,其实还可以继续抽象,不过再抽象就接近装饰者模式了

脚本宝典总结

以上是脚本宝典为你收集整理的设计模式——桥接模式(Bridge模式)全部内容,希望文章能够帮你解决设计模式——桥接模式(Bridge模式)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。