今天来总结设计模式:桥接模式

一、引言

桥接模式是什么?为什么出现桥接模式?桥接模式怎么实现?

  1. 桥接模式可以理解为把程序中抽象和实现分开,中间通过一座桥进行联系,其他地方互不干扰
  2. 为什么出现桥接模式?可以看以下类图

iOS项目桥接文件_设计模式


类图中一共有3个接口,小米品牌,华为品牌继承于手机接口。小米和华为各有3种种类的手机。

假如我们现在要增加苹果品牌的手机,是不是应该做成如下图:

iOS项目桥接文件_设计模式_02


很明显,手机品牌(小米,华为,苹果)和手机样式(全面屏,折叠屏,翻盖)耦合在一起了,不利于我们程序的扩展。由此引出桥接模式。

二、桥接模式的实现

桥接模式的实现很简单,直接上类图:

iOS项目桥接文件_iOS项目桥接文件_03


很明显,相信大家已经看到了,没错,就是中间横线,聚合的那条桥。左边是具体的实现类,右边是抽象的手机品牌,把实现和抽象分离开,正是桥接模式的思想。

下面给大家实现一波代码:

/**
 * 品牌接口
 */
public interface Brand {
}


/**品牌实现类
 * 小米
 */
public class XiaoMi implements Brand {

}

/**
 * 华为
 */
class HuaWei implements Brand{

}
/*
苹果
 */
class Iphone implements Brand{

}

以上是桥的右边也就是抽象部分
接下来展示桥的左边,实现部分

/**
 * 手机
 */
public abstract class Phone {
    private Brand brand;//聚合品牌,相当于桥

    //构造方法
    public Phone(Brand brand){
        this.brand=brand;
    }
}


//-------------------------实现类-----------------------------
/**
 * 全面屏
 */
public class QuanMianPing extends Phone{
    public QuanMianPing(Brand brand) {
        super(brand);
    }
}

/**
 * 折叠屏
 */
class ZheDiePing extends Phone{
    public ZheDiePing(Brand brand) {
        super(brand);
    }
}

class FanGai extends Phone{
    public FanGai(Brand brand) {
        super(brand);
    }
}
//Min方法如下

iOS项目桥接文件_iOS项目桥接文件_04

可以看出,每种手机样式(全面屏,折叠屏,翻盖)都聚合了一个品牌对象,因此,现在如果要增加一种样式或者手机品牌,只需要在桥的左边,或者右边添加类即可。实现样式(实现)和品牌(抽象)分开。

三、结束

以上就是桥接模式的全部内容了,觉得写得还算通俗易懂的各位朋友动动小手点赞,谢谢大家。