桥接模式
模式描述
将抽象部分与实现部分分离,使之可以独立变化。换句话说,当一个类存在两个(或多个)独立变化的维度,通过组合的方式让这两个(或多个)维度可以独立进行扩展。
优点
- 分离抽象和实现;
- 提高扩展性;
- 实现细节对 Client 透明
缺点
应用场景
- 不希望抽象和实现有绑定关系;
- 类的抽象以及实现可以通过生成子类的方式进行扩充;
DATE | CHANGELOG |
---|---|
2023年5月9日 | 初始化 |
UML 类图
classDiagram
class Abstraction {
<<interface>>
operation()
}
class RefinedAbstraction {
operation()
}
Abstraction <|.. RefinedAbstraction
class Implementor {
<<interface>>
operationImp()
}
class ConcreteImplementorA {
operationImp()
}
class ConcreteImplementorA {
operationImp()
}
Implementor <|.. ConcreteImplementorA
Implementor <|.. ConcreteImplementorB
Abstraction o.. Implementor
Abstraction <-- Client
参与者
Abstraction
- 定义抽象类的接口;
- 维护一个指向 Implementor 的指针;
RefinedAbstraction
- 扩展 Abstraction 的接口;
Implementor
- 定义实现类的接口。该接口不一定与 Abstraction 完全一致;
- Implementor 接口仅提供基本操作,而 Abstraction 则定义了基于这些基本操作较高层次的操作;
ConcreteImplementor
- Implementor 的实现;
Client 类
客户端。
数据流
- Client 通过调用 Abstraction 中的接口来操作;
- Abstraction 的实现委托给 ConcreteImplementor 来进行;
相关模式
- 抽象工厂:用来创建和配置一个特定的桥接模式;
- 适配器模式:通常在系统设计完成后使用,桥接模式则在系统开始时就被使用。
补充
- ”抽象“并非是抽象类或接口,而是一组行为,真正的业务实现委托给”实现“来完成;