设计模式-桥接 | 8lovelife's life
0%

设计模式-桥接

桥接模式可以将抽象与实现解耦,使得抽象和实现这两部分可以独立变化,这能够提高系统的扩展性和可维护性。桥接模式是一种结构型模式,这种结构能够帮助我们更好的组织和管理代码。在本博客中我们将通过跨平台应用的实例来说明桥接模式的特点

简单实现

下图展示了跨平台应用的简单架构实现,通过继承的方式进行平台、应用程序的扩展

imag

这种架构抽象方式非常简单,但如果需要进行平台的扩展、新应用的开发,将会非常困难

  • 新增支持 IOS、Android 平台,则需要在新增的平台上创建所有应用程序类
    imag

  • 新增应用程序,则需要在所有平台创建新增的应用程序类
    imag

这种方式的扩展不仅会导致类的数量剧增且难以维护,同时对于平台的扩展,也会影响到具体应用程序类的代码,这也违反了 SRP 设计原则

桥接模式

桥接模式的核心思想是将抽象部分与实现部分解耦,主要包含以下几个角色

  • Abstraction: 抽象类,定义抽象部分接口
  • RefineAbstraction: 扩展抽象类,增加新的行为或特性
  • Implementor: 定义实现部分的接口
  • ConcreteImplementor: 具体实现类,实现具体的操作,该类包含了抽象所需的全部功能

imag

这里的 Client 表示使用方,使用方依赖抽象而不是具体实现,这同时也符合 DIP 设计原则。我们来看看桥接实现方式,是如何体现出更好的系统扩展性

imag

扩展平台和应用程序更简单,互不影响,符合 SRP 设计原则

imag

应用场景

桥接模式适用于需要处理多种实现方式的场景

  1. 跨平台应用程序:需要在 Windows、Linux、Mac操作系统中运行的应用程序,可以通过桥接方式处理不同平台之间的差异
  2. 不同用户界面:需要支持 Windows界面和 WEB界面的系统,可以通过桥接方式来解决不同界面间的差异
  3. 多数据库系统:需要支持 Mysql、Oracle、SQL Server 数据库系统,可以通过桥接方式解决不同数据库之间的差异