Skip to content

Latest commit

 

History

History

bridge

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

桥接模式(Bridge)

定义

将抽象部分与它的实现部分分离,使它们都可以独立地变化。

本质

分离抽象和实现。

优点

  • 分离抽象和实现部分
  • 更好的扩展性
  • 可动态地切换实现
  • 减少子类的个数

建议在以下情况中选用桥接模式

  • 如果你不希望在抽象部分和实现部分采用固定的绑定关系,可以采用桥接模式,来把抽象部分和实现部分分开,然后在程序运行期间来动态地设置抽象部分需要用到的具体的实现,还可以动态地切换具体的实现。
  • 如果出现抽象部分和实现部分都能够扩展的情况,可以采用桥接模式,让抽象部分和实现部分独立地变化,从而灵活地进行单独扩展,而不是搅在一起,扩展一边就会影响到另一边。
  • 如果希望实现部分的修改不会对客户产生影响,可以采用桥接模式。由于客户是面向抽象的接口在运行,实现部分的修改可以独立于抽象部分,并不会对客户产生影响,也可以说对客户是透明的。
  • 如果采用继承的实现方案,会导致产生很多子类,对于这种情况,可以考虑采用桥接模式,分析功能变化的原因,看看是否能分离成不同的纬度,然后通过桥接模式来分离它们,从而减少子类的数目。

思考

  • 在 Go 中,sort 包里的 Interface 接口,就可以理解为是桥接模式。不管你是怎么样实现的接口,sort 只需要关心怎么样调用这个接口来达到排序的目的即可,两部分都是可以独立变化的。只不过对接口的调用并不是封装在一个结构体中,而是直接通过函数参数传递进去的。