桥接模式(Bridge)
一个类中有两个可以扩展的组件,需要扩展的时候会很麻烦,通过桥接接口,把其中一个组件独立出去。
应用场景:
- 一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。
- 如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。
- 对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。
单一职责原则( Single responsibility principle ):一个类应该只有一个发生变化的原因。
例子
多层继承结构:电脑为父类接口;台式机,笔记本,平板电脑为接口的实现类;具体商品为电脑类型的子类。
类图:
当需要添加新的品牌时,例如HUAWEI ,我需要新建三个实现类,分别实现不同的接口,才能完成新增。
当需要添加新的产品类别时,例如智能手表,那我需要新建一个智能手表接口,再新建三个实现类,才能完成新增。
解决方案:
新建一个 桥接接口 Brand,实现 品牌 与 产品类别 两个属性各自独立。
当需要添加新的品牌时,例如HUAWEI ,我只需要新建一个实现Brand接口的实现类即可。
需要添加新的产品类别时,例如智能手表,我只需要在Computer2下新建一个子类即可。