type
status
date
slug
summary
tags
category
icon
password
一、桥接模式概述
Bridge 模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。
一个类存在两个(或多个)独立变化的维度,我们通过组合的方式,让这两个(或多个)维度可以独立进行扩展。
如下图,有两个维度,分类和品牌,手机分类(折叠、直立、旋转 … )会有多种,传统的父子类继承模式会随着类型的增多而增多,新增一种类型,都要将每个手机品牌都进行一种实现,类数量会爆炸,基于组合方式的桥接模式可以解决这个问题。

桥接模式结构:
桥接(Bridge)模式包含以下主要角色:
- 抽象化(Abstraction)角色 :定义抽象类,并包含一个对实现化对象的引用。
- 扩展抽象化(Refined Abstraction)角色 :是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。
- 实现化(Implementor)角色 :定义实现化角色的接口,供扩展抽象化角色调用。
- 具体实现化(Concrete Implementor)角色 :给出实现化角色接口的具体实现。
二、桥接模式实现
以上方手机问题为例进行实现!
实现化角色-顶层接口
品牌接口定义了手机的功能操作:
抽象化角色-顶层抽象类
构造器会传入各个品牌手机对于顶层接口的具体实现,多态接收参数,Phone 的调用就是调用各个品牌手机的实现细节:
抽象化角色(抽象类)中包含实现化角色引用。
具体实现化角色
手机实现品牌功能接口:
拓展抽象化角色
各类型继承手机类,构造器传入各品牌的实现,真正调用的是各品牌实现的方法:
通过组合关系调用实现化角色中的业务方法。
测试类
三、小总结
- 实现了抽象和实现部分的分离,提高了系统的灵活性,使系统分层,结构清晰。
- 对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其它由具体业务完成。
- 桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本。
- 桥接模式的引入增加了系统的理解和设计难度,聚合关联关系建立在抽象层。
- 桥接模式要求正确识别出系统中两个独立变化的维度(抽象、和实现)。
- 作者:ITNXD
- 链接:https://blog.itnxd.eu.org/article/bridging-design-pattern-of-structural-pattern
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

