桥接模式

桥接模式用一种巧妙地方式处理多层继承存在的问题,用抽象关联来取代传统的多层继承,将类与类之间的静态继承关系转变为组合关系。让系统更加的灵活,并易于扩展,并有效的控制了系统中类的个数。

有点像策略模式,他是将多个耦合的维度拆分,将部分维度拆分为配置与策略,使用组合关系解耦代码

上图是经过桥接模式拆分的代码结构,共有两个维度:

  1. 支付类型(微信支付、支付宝支付)

  2. 支付方式(密码支付、指纹支付)

正常使用继承,可能会发生多继承的情况,使用桥接模式拆分,可以很好的解耦代码。但是相应的,代码设计变复杂,且代码的类会增多。

桥接模式的应用场景:

  1. 需要提供平台独立性的应用程序时,比如JDBC驱动程序、硬盘驱动程序。定义了一个桥接器,桥接其他应用程序

  2. 需要在某种协议下增加更多的组件时,比如支付场景中,我们期望支持支付宝、微信、银联各种支付组件。这里的统一协议就是收款、支付、扣款,而组件就是微信、支付宝

  3. 基于消息驱动的场景,虽然消息的行为比较统一(发送、接收、处理、回执),但是其实具体的客户端实现各部相同,比如手机短信、qq、微信、邮件消息等。

  4. 拆分复杂的类和对象,当一个类中包含大量的方法时,既不方便阅读,也不方便修改

  5. 希望从多个维度独立扩展时,比如系统功能性和非功能性角度、业务或者技术角度等。

最后更新于