[2] [单一职责] ( 2 ) 桥模式 bridge

总结

  • 一些李建忠的讲解
    Bridge模式有时候类似于多继承方案,
    但是多继承方案往往违背"单一职责原则(即一个类只有一个变化的原因)",复用性比较差.
    Bridge模式是比多继承方案更好的解决方法.
    .
    当具有多个变化的维度, 随着需求的变化,子类急剧膨胀,
    同时充斥着重复代码,这时候的关键是划清责任.
    将抽象部分(业务功能)与实现部分(平台实现)分离,
    使它们都可以独立地变化.
    .
    Bridge模式使用"对象间的组合关系",
    解耦了 抽象和实现 之间固有的绑定关系,
    使得抽象和实现, 可以沿着各自的维度来变化.
    所谓抽象和实现沿着各自纬度的变化,即"子类化"它们.

  • 关键词
    多个变化维度
    .
    划分责任,进行分离,沿着各自维度发展(子类)
    .
    组合代替多继承
    .
    运行时装配代替编译时装配




C++例子

重构前

image

重构后

image


image

这就是桥模式

划分责任, 进行分离(用组合), 沿着各自的发展方向发展(用子类).
image


角色结构

image




java例子

参考

https://youtu.be/F19UUeG37VQ?si=uqekWWnCNVqQE1xY
https://github.com/turingplanet/design-patterns-series/blob/main/v16_bridge/java/OnlineStore1.java

重构前

如果出现一个新的需求, 比如要给商品添加新的支付方式, 现金/虚拟货币支付,则需要改动商品的代码.
image

重构后

新的需求再怎么添加新的商品和新的支付方式, 都不用修改以前的代码
image

结构

image


image




posted @ 2023-10-15 20:59  qwertzxc  阅读(15)  评论(0)    收藏  举报