桥接设计模式

桥接设计模式


  1. 简单介绍

    桥接模式是一种结构型设计模式。该模式是将抽象和具体的实现这两个维度独立开来,二者互不影响,可以独立的扩展。通过组合的方式,将二者进行关联。

  2. 使用场景

    一个类存在两个变化的维度,且这两个变化维度都有扩展的需求,那么这种类在结构在设计时可以采用桥接模式。例如:对智能手机App进行类的设计时,可以对其抽象出两个维度。其中一个维度是手机的操作系统(如新增一个鸿蒙系统),另一个变化的维度是新增一款App(如新增一个音乐App)。那么这种类的结构在设计时可以采用桥接模式。

  3. 场景举例

    JDBC中的Driver和Connection的结构设计采用的是桥接模式。JDBC提供一套接口规范,其他厂商在遵守规范的前期下,可以有自己的具体实现。JDBC中存在两个接口,分别是Driver和Connection。MySQL针对Driver接口的具体实现为:ReplicationDriver、NonRegisteringDriver等,针对Connection接口具体实现为:ConnectionImpl、LoadBalancedConnection等。具体的Connection获取则是Driver的实现类与Connection具体的实现类协作来获取。对于Driver和Connection可以轻易做到扩展,并且用户只需要通过修改jar包,来改变Driver和Connection从而达到切换数据的目的。

  4. UML类图
    桥接模式UML类图

  5. 具体实现

    • 描述

      • 手机App,根据操作系统来区分,可以分为IOS(IosApp)和Android(AndroidApp)版本

      • 例子中的App为微信(WeChat)、支付宝(Alipay)

      • 通过桥接模式对操作系统版本和和App进行组合,得出IOS版本的微信和支付宝以及Android版本的微信和支付宝

    • 实现代码

      AbstractApp.java

      /**
       * 桥接类
       */
      public abstract class AbstractApp {
             
      
          /**
           * 将App具体实现,聚合进来
           */
          public AppImplementor appImplementor;
      
          public AbstractApp(AppImplementor appImplementor) {
             
              this.appImplementor = appImplementor;
          }
      
          public void showOsVersion() {
             
              System.out.println(String.format("版本:%s,名称:%s", getOsVersion(), appImplementor.getAppName()));
          }
      
          public abstract String getOsVersion(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值