Files
hyperf_test/document/bridge.md
2025-09-07 18:28:06 +08:00

2.1 KiB

桥接模式 (Bridge Pattern) 详解

桥接模式是一种结构型设计模式,它通过将抽象部分与实现部分分离,使它们可以独立变化而不互相影响。这种模式使用组合关系代替继承关系,从而降低了抽象和实现之间的耦合度。

核心概念

用组合代替继承,将多维度的变化拆分为多个正交的维度,每个维度独立变化。

结构

  • 抽象部分(Abstraction): 定义高层的抽象接口/包含一个对实现部分的引用
  • 精确抽象(Refined Abstraction): 扩展抽象部分的变体
  • 实现接口(Implementor): 定义实现类的接口
  • 具体实现(Concrete Implementor): 实现Implementor接口的具体类

优缺点

优点
  • 分离抽象和实现:可以独立扩展两者
  • 提高可扩展性:可以独立添加新的抽象或实现
  • 避免继承爆炸:通过组合代替多层继承
  • 符合开闭原则:新增维度不影响现有代码
缺点
  • 增加系统复杂度:需要正确识别抽象和实现两个维度
  • 对高内聚类不适用:如果抽象和实现本身高度耦合,强行分离反而不好

桥接模式 vs 其他模式

模式 区别
适配器模式 适配器是事后补救,桥接是事先设计
抽象工厂模式 抽象工厂关注产品族,桥接关注分离抽象与实现
策略模式 策略模式改变行为,桥接模式分离抽象与实现

虽然桥接模式和策略模式在结构上相似,但它们的目的不同:

  • 桥接模式:关注抽象和实现的分离,使它们可以独立变化
  • 策略模式:关注算法的替换,使算法可以独立于客户端变化

在 Hyperf 中,桥接模式更适合以下场景:

  • 需要将抽象与其实现解耦
  • 抽象和实现都需要通过子类化来扩展
  • 需要共享多个对象间的实现

桥接模式通过这种分离设计,让系统获得更好的扩展性和维护性,是多维度变化场景下的优秀解决方案。

tips

/config/autoload/dependencies.php