桥接模式学习

桥接模式可以对多层次继承的类进行重构

多层次结构示例:

例如添加三角形状, 你需要新增两个子类, 也就是每种颜色一个; 此后新增一种新颜色需要新增三个子类, 即每种形状一个。 如此以往, 情况会越来越糟糕。

使用桥接模式进行重构:

实际上是在形状这个接口中定义一个成员变量,这个变量类型为颜色接口。

代码实现:

颜色接口:

颜色接口实现类:

图片类:

 

 图片类中颜色作为成员变量,图片类的构造方法入参为颜色。

圆形图片实现类:

方块图片实现类:

测试类:

 

测试类中,颜色作为入参传入形状类的构造器中,创建了红色圆和蓝色方块两个对象;同理还可以

 创建红色方块和蓝色圆两个对象。若需要增加形状和颜色,可以新增图片接口的对应形状实现类和颜色实现类即可,不需要对之前的代码进行更改。

桥接模式的应用场景

        1.如果你想要拆分或重组一个具有多重功能的庞杂类 (例如能与多个数据库服务器进行交互的类), 可以使用桥接模式。

         类的代码行数越多, 弄清其运作方式就越困难, 对其进行修改所花费的时间就越长。 一个功能上的变化可能需要在整个类范围内进行修改, 而且常常会产生错误, 甚至还会有一些严重的副作用。

        桥接模式可以将庞杂类拆分为几个类层次结构。 此后, 你可以修改任意一个类层次结构而不会影响到其他类层次结构。 这种方法可以简化代码的维护工作, 并将修改已有代码的风险降到最低。

         2.如果你希望在几个独立维度上扩展一个类, 可使用该模式。桥接建议将每个维度抽取为独立的类层次。 初始类将相关工作委派给属于对应类层次的对象, 无需自己完成所有工作。

         3.如果你需要在运行时切换不同实现方法, 可使用桥接模式。当然并不是说一定要实现这一点, 桥接模式可替换抽象部分中的实现对象, 具体操作就和给成员变量赋新值一样简单。

桥接模式的优缺点

优点:

  • 你可以创建与平台无关的类和程序。
  •  客户端代码仅与高层抽象部分进行互动, 不会接触到平台的详细信息。
  •  开闭原则。 你可以新增抽象部分和实现部分, 且它们之间不会相互影响。
  •  单一职责原则。 抽象部分专注于处理高层逻辑, 实现部分处理平台细节。

缺点:

  •  对高内聚的类使用该模式可能会让代码更加复杂

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值